奇妙な微信内蔵ブラウザIOS版とAnroid版

1923 ワード

html 5ページでシミュレーションしてalertという関数を書きました.主にヒントボックスとクリックヒントボックスのコールバック機能を実現しました.関数は以下の通りです.
function alert(word, fn) {
    $("#coverbg").show();
    if (fn && typeof (fn) == "function") {
        var conStr = "<div id='conDiv' class='conDiv'>" + "<div id='tipcontent' class='concontentc'>" + word + "</div>" + "<div class='conbtn' style='width:100%;' onclick='hideCon(" + fn + ");'>  </div>" + "</div>"
    } else {
        var conStr = "<div id='conDiv' class='conDiv'>" + "<div id='tipcontent' class='concontentc'>" + word + "</div>" + "<div class='conbtn' style='width:100%;' onclick='hideCon();'>  </div>" + "</div>"
    }
    if ($("#conDiv").length > 0) {
        $("#conDiv").remove()
    }
    $("body").append($(conStr));
    var wordWidth = noneWidth(word);
    var divW = $("#conDiv").width();
    if (wordWidth / divW > 0.8) {
        wordWidth = divW * 0.8
    }
    $("#tipcontent").width(wordWidth);
    var winH = $(window).height() / 2 - 90;
    $("#conDiv").css("top", winH + "px")
}

外部ブラウザやAndroid携帯電話の微信でテストしても正確なコールバック関数fnは可能ですが、IOSでは正確なコールバック関数はできません.おかしいですね.そして一歩一歩問題を探し始め、疑い始めたのは
if (fn && typeof (fn) == "function")

条件が成立しないで、それからログを作って表示して、結果はundefinedに戻って微信の内部のブラウザの中で、それからまたcallを使って、applyなどの方式はすべてundeinedで、本当に無言で、最後にfnのパラメータを文字列に伝達して過去に依然としてundefinedであることを発見して、本当に人を悩ませて、後でalertが微信に使用されたのかもしれないと思って、1つのパラメータしか伝達できなくて、関数をshowalertと名前を変えて、テストして意外にもできました!
以上の問題の解決により、微信androidバージョンとIOSバージョンの実現には大きな違いがあることが分かった.また、微信にはalert関数が内蔵されており、優先度が高い!分析が正しいかどうか分からない!