Javascript Snippet在Safari 11和12中无效

问题描述 投票:0回答:1

有谁知道以下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?

javascript safari safari-11
1个回答
2
投票

解决了

问题在于以下几行:

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

应该

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

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

© www.soinside.com 2019 - 2024. All rights reserved.