首页 > 解决方案 > Javascript 片段在 Safari 11 和 12 中不起作用

问题描述

有谁知道为什么以下 javascript 代码段在 Chrome 和 Firefox 中都有效但在 Safari 11 和 12 版本中无效的原因?

它唯一要做的就是获取 url 参数代码中的值并将其插入到需要我希望它位于的页面上的 url 中。

新的 Safari 版本中是否对 javascript 有任何限制?我在网上找不到任何资料。。

<script>
window.addEventListener("DOMContentLoaded", function() {

    if (window.location.href.indexOf('?code') > -1) {
        var uniqueCode = window.location.search.split(/\?|&/g).filter(function(str){
                                                               return str.toLowerCase().indexOf('code') > -1
                                               })[0].replace('code=','');

        var codeLinks = document.querySelectorAll('[href*="/validate/promocode/"'); 

        for (var i = 0; i < codeLinks.length; i++) {
            var currentHref = codeLinks[i].href;
            var newHref = currentHref.replace(/\/validate\/promocode\/.*\/buy\//, "/validate/promocode/" + uniqueCode + "/buy/");
            codeLinks[i].href = newHref;
        }   
    }
}, false);

</script>       

我没有 Mac 可以对此进行测试,但是否有可能在 Mac 上的版本 11 和 12 上默认禁用 Javascript?

标签: javascriptsafarisafari-11

解决方案


解决了

问题在于以下行:

var codeLinks = document.querySelectorAll('[href*="/validate/promocode/"');

应该

var codeLinks = document.querySelectorAll('[href*="/validate/promocode/"]');

其他 4 个浏览器没有抱怨的小语法错误。结论:Safari 对语法错误更加严格。


推荐阅读