JavaScript代码段无法在Safari 11和12中使用

时间:2019-02-19 08:49:00

标签: javascript safari safari-11

有人知道以下javascript片段在Chrome和Firefox中都可以使用而在Safari 11和12版本中却不能使用的原因吗?

唯一要做的就是将url参数 code 中的值插入到需要我希望它包含在页面中的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吗?

1 个答案:

答案 0 :(得分:1)

已解决

问题出在以下几行:

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

应该是

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

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