invalid platform argument怎么解决
答案:2 悬赏:30 手机版
解决时间 2021-02-06 12:57
- 提问者网友:聂風
- 2021-02-06 09:12
invalid platform argument怎么解决
最佳答案
- 五星知识达人网友:白昼之月
- 2021-02-06 09:49
1. 环境: <br>browser_info:"platform:Win32;msie;version:8.0;ie", <br>navigator:"appCodeName:Mozilla;appName:Microsoft<br> Internet Explorer;appMinorVersion:Release Candidate <br>1;cpuClass:x86;platform:Win32;systemLanguage:zh-cn;userLanguage:zh-cn;appVersion:4.0<br> (compatible; MSIE 8.0; Windows NT 5.1; Trident\u002F4.0; .NET CLR <br>1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR <br>3.5.30729);userAgent:Mozilla\u002F4.0 (compatible; MSIE 8.0; Windows NT <br>5.1; Trident\u002F4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR <br>3.0.4506.2152; .NET CLR 3.5.30729);onLine:true;cookieEnabled:true" <br>2. 错误代码: <br><br>复制代码 代码如下:<br><br><!DOCTYPE html><html><head></head> <br><body><div></div></body> <br><script> <br>alert(document.body.querySelectorAll); <br>var els = document.body.querySelectorAll('div'); <br>alert(els[2]);// 2 > els.length-1 <br></script> <br></html> <br><br>3. 原因分析: <br>以上代码中,els是一个querySelectorAll的结果。els[2]会抛异常,而不是返回undefined. <br><br>4. QWrap代码错误点:在QWrap的selector里,有可能会出现对querySelectorAll结果取下标超界。参见以下代码的红色部分 <br><br>复制代码 代码如下:<br><br> <br>function nativeQuery(refEl, sSelector) { <br>if (hasNativeQuery && /^((^|,)\s*[.\w-][.\w\s\->+~]*)+$/.test(sSelector)) { <br>//如果浏览器自带有querySelectorAll,并且本次query的是简单selector,则直接调用selector以加速 <br>//部分浏览器不支持以">~+"开始的关系运算符 <br>var oldId = refEl.id, <br>tempId, <br>arr = [], <br>els; <br>if (!oldId && refEl.parentNode) { //标准的querySelectorAll中的selector是相对于:root的,而不是相对于:scope的 <br>tempId = refEl.id = '__QW_slt_' + nativeQueryStamp++; <br>try { <br>els = refEl.querySelectorAll('#' + tempId + ' ' + sSelector); <br>} finally { <br>refEl.removeAttribute('id'); <br>} <br>} <br>else{ <br>els = refEl.querySelectorAll(sSelector); <br>} <br>for (var i = 0, elI; elI = els[i++];) arr.push(elI); <br>return arr; <br>} <br>return null; <br>} <br><br>5. 反思: <br> 代码A:for (var i = 0, len = els.length; i < len; i++) arr.push(els[i]); <br> 代码B:for (var i = 0, elI; elI = els[i++];) arr.push(elI); <br>用“代码B”代替“代码A”是一种常见写法,可是,碰到这台机器,却冏冏冏冏冏冏冏冏冏了。 <br><br>6. 问题修复: <br>老老实实的改回代码A。OK了。 <br><br>7. 延伸: <br>“下标超界抛异常,而不是返回undefined”这个坑好冏。。。 <br>貌似那同学的机器访问淘宝页面,也有类似异常抛出,不知是否是同样原因。
全部回答
- 1楼网友:低血压的长颈鹿
- 2021-02-06 10:18
搜一下:invalid platform argument怎么解决
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯