javascript - 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?
解决方案
解决了
问题在于以下行:
var codeLinks = document.querySelectorAll('[href*="/validate/promocode/"');
应该
var codeLinks = document.querySelectorAll('[href*="/validate/promocode/"]');
其他 4 个浏览器没有抱怨的小语法错误。结论:Safari 对语法错误更加严格。
推荐阅读
- php - 将值绑定到 WHERE IN(sql)
- ruby-on-rails - 为什么 Rails 无法启动并显示“预期在 `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError) 中找到清单文件”?
- java - 如何实现一个按钮,它定期发送消息(用户只点击一次)到另一个网络()例如 CAN)
- reactjs - Material UI 搜索栏 - 使用钩子设置查询状态
- wso2 - 在 WSO2 流处理器中比较批次的平均值
- go - 是否需要通过 gprc 流客户端重新创建新流?
- org-mode - 如何使用单个命令归档所有 DONE/DELEGATED/DEFERRED 任务
- javascript - 无法更改文本字段变体的边框半径=填充 Material-ui-core
- ssh - 使用 google gcloud 通过 ssh 隧道进入网络内的 linux 机器
- excel - 通过从另一个单元格值获取其引用来偏移和复制单元格值