Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未在移动设备上加载外部脚本:未捕获类型错误_Javascript_Mobile - Fatal编程技术网

Javascript 未在移动设备上加载外部脚本:未捕获类型错误

Javascript 未在移动设备上加载外部脚本:未捕获类型错误,javascript,mobile,Javascript,Mobile,从移动设备上的CDN加载library JS脚本支付时,我看到一个错误: paddle.js:94 Uncaught TypeError: Cannot read property '1' of null 奇怪的是,相同的代码在任何桌面浏览器上都能正常加载和工作,但在任何移动设备上都无法加载 。要获得实际错误,您可以在移动电话上打开它,也可以使用移动仿真器 你认为我加载的脚本不正确吗?还是我怀疑这是一个支付系统缺陷,因为他们有太多的客户没有注意到这一点 代码: 拨片脚本中的第94行是以下切换

从移动设备上的CDN加载library JS脚本支付时,我看到一个错误:

paddle.js:94 Uncaught TypeError: Cannot read property '1' of null
奇怪的是,相同的代码在任何桌面浏览器上都能正常加载和工作,但在任何移动设备上都无法加载

。要获得实际错误,您可以在移动电话上打开它,也可以使用移动仿真器

你认为我加载的脚本不正确吗?还是我怀疑这是一个支付系统缺陷,因为他们有太多的客户没有注意到这一点

代码:


拨片脚本中的第94行是以下切换语句:

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和MacOSX设备的操作系统版本

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

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

您使用的是什么手机或模拟器?你能把这个放到设备上的JS提琴里,看看上面写的是什么吗

document.body.innerHTML=+navigator.userAgent+

我可以想象,您将有一个字符串满足上面的一个切换条件,但不返回正则表达式匹配

这仅仅是来自Paile的糟糕代码的结果,它不应该期望用户代理字符串采用特定的格式,因为它们可以被用户、插件、设备、代理等各种内容覆盖


如果您可以覆盖正在使用的设备或模拟器的用户代理,使其与其中一个正则表达式模式匹配,则这样做将不再出现错误。

感谢您的帮助。有时,在使用大型API时,您最不希望他们使用错误的做法,而是责怪自己。
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;
}