针对如何根治ScriptError.和如何根治十二指肠溃疡这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展ajavascripterroroccurred怎么办、ajavascripterr
针对如何根治 Script Error.和如何根治十二指肠溃疡这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展a javascript error occurred怎么办、a javascript error怎么修复、ajavascript error occurred怎么解决、Error-JavaScript-SCRIPT5007: 无法获取未定义或 null 引用的属性 “style”等相关知识,希望可以帮助到你。
本文目录一览:- 如何根治 Script Error.(如何根治十二指肠溃疡)
- a javascript error occurred怎么办
- a javascript error怎么修复
- ajavascript error occurred怎么解决
- Error-JavaScript-SCRIPT5007: 无法获取未定义或 null 引用的属性 “style”
如何根治 Script Error.(如何根治十二指肠溃疡)
本文简要介绍了 Script Error 问题的来龙去脉,但也不局限于 Script Error,对于通用的系统性问题,应该找到系统性解决方案,进而治标治本。
Script Error 原因与当前解法
受浏览器同源策略限制,未知跨域脚本执行错误时,抛出的错误信息为 "Script error.",导致开发者无法定位具体错误。为了获取详细错误信息及堆栈,一般解法是给 Script 标签配置 crossorigin 属性,同时对应脚本服务端需配置 Access-Control-Allow-Origin 响应头。
另外还有一些 hack 解法,对浏览器原生 API 做代理,将业务代码放在 Try Catch 作用域中执行,但写好代理方法是不容易的,粗制滥造的代理方法会制造很多隐藏 Bug,并且大量 Try Catch 在一些 JS Engine 中也存在额外性能损耗,为了解决 Script Error 采用此方案得不偿失。
还有什么问题
- crossorigin 不好加
异步加载脚本套娃,A 加载 B,B 加载 C,以至于不知道加载了哪些外部脚本
需要服务端配合设置响应头 Access-Control-Allow-Origin
- crossorigin 加不了
外部注入代码,如浏览器插件、定制 Webview 容器(xx 浏览器)
- 无效 Script Error 数据,难以评估对业务实际影响,并且耗费监控资源
溯源:为什么是 Script Error
从 2006 年一篇安全漏洞文章说起:I know if you''re logged-in, anywhere
在那个年代大量网站都是服务端渲染,服务端根据用户登录态返回不同页面内容,黑客通过 Script 加载目标站点,用户已登录、未登录返回的 Response 内容不同,报错信息也会有差异,这样就可以通过报错信息区分用户是否登录,进一步展开针对性的攻击。
<script src=” http://mail.google.com/mail/”></script>
已登录:
**未登录: **
对于其他站点也是类似,错误信息中总会有差异,比如亚马逊登录和未登录,报错的 LineNo 不同。
基于此,WHATWG 对错误信息透出制定了规范:
Chrome 实现:
《I know if you''re logged-in, anywhere》地址:https://blog.jeremiahgrossman.com/2006/12/i-know-if-youre-logged-in-anywhere.html
Script Error 规范是否能调整
通过以上信息,我们可以理解 Script Error 的设计初衷以及其合理性,但我也有疑问,在今天浏览器同源策略比较完善的情况下,是否有必要屏蔽所有信息(error message、lineno、colno、url)?能否将发生 Script Error 的脚本 url 暴露出来,以便开发者收集到错误信息时快速定位错误来源,这样也方便评估影响面,比如明显是注入的脚本错误,直接忽略即可。
翻阅 WHATWG Github 历史 issue,发现已经有过相关讨论,很明确答案是 No,大概原因是当前的同源策略已经很全面(复杂),不想在挖坑。以至于对 unhanlderejection,连 Script Error 都不愿意报。
相关讨论地址:https://github.com/whatwg/html/issues/2440 <br><br> unhanlderejection地址:https://github.com/whatwg/html/issues/5051
其他大厂如何处理 Script Error
我在几个大厂网站上做了测试,加载一个第三方脚本,第三方脚本一定会报错,看看对应站点如何处理。
var s = document.createElement(''script'');
s.src = ''https://g.alicdn.com/dinamic/h5-tb-cart/5.0.41/index.min.js'';
document.body.appendChild(s);
-
Google:常规处理,直接上报 Script Error
-
Twitter: 通过 CSP 策略拦截了未知脚本加载,包括 Github、FaceBook 都采用类似方案
-
QQ 视频:除了上报 Script Error,并监控上报异步加载的脚本
面向未来我们应该如何处理 Script Error
面向未来看问题,我们不能与标准背道而驰,同源策略是当前解决 Web 安全问题的重要手段,在未来只会更完善,我们应该积极了解与应用。当前国内互联网对同源策略的了解与应用大多止步于 Access-Control-Allow-Origin: *,这是远远不够的。
因此,面向未来 Script Error 问题 Twitter 的处理方式相对合理,只允许站点加载白名单脚本,对白名单脚本逐个做 CrossOring 等配置,同时也杜绝了外部脚本注入。对于淘宝来说,受限于业务体量以及历史包袱,做这种改造难度可想而知,但我们应该朝这个方向努力,而不是让开发者面对 Script Error 手足无措,靠猜测或是加错误过滤解决问题。
回到当下,短期的解决方案要增强跨域脚本的感知能力,可以配置 CSP Report Only 上报跨域脚本,也可以通过原始手段统计,进而对相关脚本做跨域配置,对于明显的跨域脚本如埋点、唤端、以及安全系列脚本,缺少 crossorigin 的尽快修复。
CSP Report Only地址:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
document.querySelectorAll(''script[src]:not([crossorigin])'')
本文简要介绍了 Script Error 问题的来龙去脉,但也不局限于 Script Error,对于通用的系统性问题,应该找到系统性解决方案,进而治标治本。
参考文档
-
what is script error(地址:https://blog.sentry.io/2016/05/17/what-is-script-error)
-
Cryptic "Script Error." reported in Javascript in Chrome and Firefox(地址:https://stackoverflow.com/questions/5913978/cryptic-script-error-reported-in-javascript-in-chrome-and-firefox)
-
解决 "Script Error" 的另类思路(地址:https://juejin.cn/post/6844903727820718094#heading-6)
-
iOS Privacy: Instagram and Facebook can track anything you do on any website in their in-app browser(地址:https://krausefx.com/blog/ios-privacy-instagram-and-facebook-can-track-anything-you-do-on-any-website-in-their-in-app-browser)
-
I know if you''re logged-in, anywhere(地址:https://blog.jeremiahgrossman.com/2006/12/i-know-if-youre-logged-in-anywhere.html)
-
HTML Spec: Runtime script errors(地址:https://html.spec.whatwg.org/multipage/webappapis.html#runtime-script-errors)
-
"Script error." message in window.onerror makes bad DevExp trade off(地址:https://github.com/whatwg/html/issues/2440)
-
unhandledrejection should fire even for muted scripts(地址:https://github.com/whatwg/html/issues/5051)
-
Content-Security-Policy-Report-Only(地址:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only)
a javascript error occurred怎么办
当出现 javascript 错误时,应采取以下步骤解决问题:1. 确定错误类型:语法错误、运行时错误或逻辑错误;2. 找到错误位置:查看控制台日志、源代码或错误堆栈;3. 分析错误信息:理解错误的原因;4. 修复错误:更正语法、检查变量或重新审视代码逻辑;5. 测试修复:重新加载页面或运行代码以验证错误已解决;6. 预防错误:使用 lint 工具、断点或调试器,并编写健壮的代码。
JavaScript 错误:如何解决
问题:当出现 JavaScript 错误时,应该怎么做?
答案:
JavaScript 错误是常见问题, 通常表现为网页崩溃、错误提示或功能不正常。解决 JavaScript 错误需要以下步骤:
立即学习“Java免费学习笔记(深入)”;
1. 确定错误类型:
- 语法错误:最常见,当代码语法不正确时发生。
- 运行时错误:当代码执行时发生错误,例如变量未定义。
- 逻辑错误:当代码逻辑不正确,导致预期结果之外的行为。
2. 找到错误位置:
- 控制台日志:大多数浏览器会将错误信息记录到控制台。
- 源代码:检查代码中引起错误的行。
- 错误堆栈:某些错误会包含指向代码错误位置的堆栈跟踪。
3. 分析错误信息:
错误信息通常包含描述错误类型的文本和代码行号。仔细阅读信息,理解错误的根本原因。
4. 修复错误:
- 语法错误:更正代码中的语法,例如丢失的分号或未闭合的花括号。
- 运行时错误:检查变量是否正确定义或是否访问了不存在的属性。
- 逻辑错误:重新审视代码逻辑,找到导致错误结果的条件或计算。
5. 测试修复:
修复错误后,重新加载页面或运行代码,以确保错误已解决。
6. 预防错误:
- 使用 lint 工具检查代码语法。
- 使用断点或调试器来步骤执行代码。
- 编写健壮的代码,处理可能的错误情况。
以上就是a javascript error occurred怎么办的详细内容,更多请关注php中文网其它相关文章!
a javascript error怎么修复
javascript 错误会阻碍网站正常运行。修复过程包括:识别错误类型和行号检查源代码是否存在语法或逻辑错误修复错误源代码重新加载页面测试受影响功能
修复 JavaScript 错误
JavaScript 错误会阻碍网站正常运行,导致页面无法加载、功能异常或用户体验不佳。及时修复这些错误至关重要。以下步骤可帮助您修复 JavaScript 错误:
1. 识别错误
- 使用浏览器控制台(通常通过按 F12 键访问)找到错误消息。
- 注意错误类型(例如 SyntaxError 或 TypeError)、错误代码和错误行号。
2. 检查源代码
立即学习“Java免费学习笔记(深入)”;
- 打开网站的源代码(通常通过按 Ctrl+U 或 Command+U 访问)。
- 导航到错误行号。
- 检查代码是否存在语法错误、拼写错误或逻辑错误。
3. 修复错误
- 根据错误类型修复源代码。
- 例如,如果错误是语法错误,请检查括号或引号是否匹配。如果是 TypeError,请确保您使用正确的变量类型。
4. 重新加载页面
- 修复代码后,刷新页面。
- 浏览器将重新加载并执行修复后的代码。
5. 测试功能
- 一旦页面重新加载,测试受影响的功能或区域,以确保错误已修复。
常见 JavaScript 错误示例:
- SyntaxError:语法错误,例如缺少分号或括号不匹配。
- TypeError:尝试对错误类型使用操作符或方法,例如将字符串与数字相加。
- ReferenceError:尝试访问未定义的变量。
- RangeError:超出有效范围的值。
以上就是a javascript error怎么修复的详细内容,更多请关注php中文网其它相关文章!
ajavascript error occurred怎么解决
“ajavascript error occurred”表示 javascript 代码执行错误。解决步骤包括检查控制台日志、审查代码、检查变量定义、检查函数调用、缩小代码范围、使用调试器、搜索代码片段和更新浏览器或环境。
如何解决 JavaScript 错误:ajavascript error occurred
ajavascript error occurred 是什么意思?
“ajavascript error occurred”是一个 JavaScript 错误消息,表示在执行 JavaScript 代码时遇到错误。这通常是由语法错误、未定义变量或其他代码问题引起的。
如何解决
立即学习“Java免费学习笔记(深入)”;
解决 JavaScript 错误涉及以下步骤:
1. 检查控制台日志:
在浏览器控制台中查看错误日志,以确定错误的确切行号和列号。这可以帮助您更轻松地定位问题代码。
2. 审查代码:
根据错误日志中的信息,检查相应的代码行。查找语法错误、拼写错误或任何逻辑错误。
常见的语法错误包括:
- 缺少分号 (;)
- 缺少括号或花括号
- 未闭合字符串
3. 检查变量定义:
确保访问的变量已正确定义且尚未声明为 undefined。
4. 检查函数调用:
验证是否正确调用函数,并且传递了所有必需的参数。
5. 尝试缩小代码范围:
通过注释掉代码的一部分来缩小错误源。逐步注释掉代码,直到错误消失,然后分析被注释掉的代码以找到问题所在。
6. 使用调试器:
如果使用 Chrome 等浏览器,可以使用调试器逐步执行代码并逐行检查变量值。
7. 搜索代码片段:
如果问题涉及特定代码片段(例如库或第三方脚本),请尝试在在线论坛或 Stack Overflow 等资源中搜索该片段的已知问题。
8. 更新浏览器或环境:
有时,错误可能是由过时的浏览器或不兼容的开发环境引起的。尝试更新浏览器或环境,看看是否能解决问题。
避免错误的技巧
- 使用 linter 工具检查代码中的语法错误。
- 仔细定义变量并避免未定义变量的错误。
- 测试代码以处理意外输入和错误情况。
- 记录代码以帮助调试和故障排除。
以上就是ajavascript error occurred怎么解决的详细内容,更多请关注php中文网其它相关文章!
Error-JavaScript-SCRIPT5007: 无法获取未定义或 null 引用的属性 “style”
ylbtech-Error-JavaScript-SCRIPT5007: 无法获取未定义或 null 引用的属性 “style” |
document.getElementById("ctl00_body_thMoneySource").style.display = "none";
document.getElementById("ctl00_body_tdMoneySource").style.display = "none";

出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
我们今天的关于如何根治 Script Error.和如何根治十二指肠溃疡的分享就到这里,谢谢您的阅读,如果想了解更多关于a javascript error occurred怎么办、a javascript error怎么修复、ajavascript error occurred怎么解决、Error-JavaScript-SCRIPT5007: 无法获取未定义或 null 引用的属性 “style”的相关信息,可以在本站进行搜索。
本文标签: