奇怪的微信內置瀏覽器IOS版和Anroid 版

在html5 網頁中模擬寫了一個名叫alert 的函數,主要實現了一個提示框和點擊提示框回調的功能,函數以下:css

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中就是不能正確回調函數。真是奇怪了!而後就開始一步步找問題,剛開始懷疑是html

if (fn && typeof (fn) == "function")

 條件不成立,而後弄了個日誌顯示,結果返回爲undefined在微信內部瀏覽器中,而後又用了call,apply等方式都是undeined,實在無語,最後把fn 參數傳遞成字符串過去發現依然是undefined,真讓人納悶,後來一想有多是alert被微信使用了吧,只能傳遞一個參數,就把函數從新命名成了showalert,通過測試竟然能夠了!html5

 經過以上問題的解決,發現微信android 版本和IOS版本實現應該差異比較大!另外微信內置了alert函數優先級高!不知道分析的是否正確!android

相關文章
相關標籤/搜索