在 iOS 上的 Safari 上浏览我们的网站(这是一个 Shopify 商店)时,当执行 javascript 时,它会抛出 SyntaxError 并停止执行 JS 文件的其余部分,从而破坏其他一些功能。但是,这不会发生在任何其他设备或浏览器上,只会发生在移动版 Safari 上。
它抛出的错误是:
单击文件会将我带到这部分代码:
(这一切都在 iPhone 上使用 BrowserStack 进行了测试,因此我能够访问开发工具以查看错误)
我找不到代码有任何问题,因为它通过了我尝试过的所有验证,而且据我所知,没有使用无效或非法的字符串。列出的所有元素都存在于页面上。
运行此代码的示例页面是: https://cancer.livebetterwith.com/products/ibeani-e-readertablet-cushion
但它发生在我们网站上的每个产品页面上。
我试过:
- 重命名选择器
- 重命名元素的属性
- 删除它标记为有错误的选择器,但浏览器只是将下一个选择器标记为错误
- 删除所有节点选择器并使用初始选择器字典
它标记为错误的代码的具体部分是:
/**
* DOM node selectors.
*/
setNodeSelectors() {
this.form = null;
this.target = null;
this.nodeSelectors = {
modal: document.querySelector(selectors.modal),
form: document.querySelector(selectors.form),
addToCart: document.querySelector(selectors.addToCart),
charityAddToCart: document.querySelector(selectors.charityAddToCart),
continueShopping: document.querySelector(selectors.continueShopping),
buttonGroups: document.querySelector(selectors.buttonGroups),
sections: [...document.querySelectorAll(selectors.section)],
tabControls: [...document.querySelectorAll(selectors.tabControl)],
tabContents: [...document.querySelectorAll(selectors.tabContent)],
condition: document.querySelector(selectors.condition),
charity: document.querySelector(selectors.charity),
};
},
但整个文件(预编译)可以在这里查看:
我花了大约 4 个小时试图找出问题所在,但我完全被卡住了,我们将不胜感激任何帮助。
谢谢
最佳答案
您有一个无效的选择器 [js-vat-exemption="addToCard
,你错过了"]
.这就在错误行之前,很可能是导致错误的原因。
顺便说一句,对于这种选择器(带值的属性),如果值不包含空格或任何这些字符:"
'
`
=
<
>
你可以省略引号。
关于javascript - iOS 上的 Safari 在 javascript 执行期间抛出 SyntaxError,但在任何其他设备/浏览器上都不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57508547/