奇怪的微信内置浏览器IOS版和Anroid 版

在html5 网页中模拟写了一个名叫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被微信使用了吧,只能传递一个参数,就把函数重新命名成了showalert,经过测试居然可以了!

 通过以上问题的解决,发现微信android 版本和IOS版本实现应该差别比较大!另外微信内置了alert函数优先级高!不知道分析的是否正确!

你可能感兴趣的:(奇怪的微信内置浏览器IOS版和Anroid 版)