gpt4 book ai didi

javascript - 外部脚本未在移动设备上加载 : Uncaught TypeError

转载 作者:行者123 更新时间:2023-12-03 03:22:33 29 4
gpt4 key购买 nike

我在移动设备上从 CDN 加载库 JS 脚本(Paddle Payments)时看到错误:

paddle.js:94 Uncaught TypeError: Cannot read property '1' of null

奇怪的是,相同的代码在任何桌面浏览器上加载并按预期工作,但无法在任何移动设备上加载。

Fiddle here 。要获取实际错误,您可以在手机上打开它或使用移动模拟器。

Docs on integration .

您认为我加载的脚本不正确还是支付系统存在缺陷(我对此表示怀疑,因为他们有太多客户,不可能没有注意到这一点)。

代码:

<script src="https://cdn.paddle.com/paddle/paddle.js"></script>

<script type="text/javascript">
Paddle.Setup({
vendor: 20000,
debug: true
});
</script>

最佳答案

Paddle 脚本中的第 94 行是这样的 switch 语句:

switch(os){
case'Mac OS X':
osVersion=/Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1];
break;
case'Android':
osVersion=/Android ([\.\_\d]+)/.exec(nAgt)[1];
break;
case'iOS':
osVersion=/OS (\d+)_(\d+)_?(\d+)?/.exec(nVer);
osVersion=osVersion[1]+'.'+ osVersion[2]+'.'+(osVersion[3]|0);
break;
}

它似乎正在尝试确定 Android、iOS 和 Mac OS X 设备的操作系统版本。

变量nAgt是浏览器的用户代理字符串(取自 navigator.userAgent )。这些正则表达式假设,如果用户代理 header 包含字符串“Mac OS X”、“Android”或“OS”,那么它后面将立即跟一个版本号。

如果这些正则表达式匹配失败,则 exec将返回 null 和 null[1]将抛出您所看到的 TypeError。

您使用什么手机或模拟器?您可以将其放入设备上的 JS Fiddle 中并查看其内容吗?

document.body.innerHTML = "<p>" + navigator.userAgent + "</p>";

我想您将拥有一个满足上述切换条件之一但不返回正则表达式匹配的字符串。

这只是 Paddle 代码编写不当的结果,Paddle 不应该期望用户代理字符串采用特定格式,因为它们可以被各种事物(用户、插件、设备、代理等)覆盖。

如果您可以覆盖您正在使用的设备或模拟器的用户代理,使其与正则表达式模式之一匹配,那么您就不会再收到错误。

关于javascript - 外部脚本未在移动设备上加载 : Uncaught TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46505279/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com