gpt4 book ai didi

javascript - Chrome 扩展 - 在浏览器上加载 js 之前获取 Html DOM

转载 作者:可可西里 更新时间:2023-11-01 13:30:27 24 4
gpt4 key购买 nike

我正在开发一个 chrome 扩展,它需要阻止 html 页面的加载,对页面中的 javascript 进行一些验证,在我的内容脚本中,然后继续(或不)加载页面。

在我的带有“run_at”的 list 中:“document_start”,内容脚本得到一个空的 html,无法进行验证。在 document_end 处使用 run_at,它已经执行了页面中的 js,紧接着我的扩展程序对其进行了验证...

有没有办法在我的内容脚本中设置像 DOMContentBeforeLoad 之类的东西?我真的别无选择..

谢谢

最佳答案

看看 TopLevel.js 是如何工作的:https://github.com/kristopolous/TopLevel (有趣的来源在 https://github.com/kristopolous/TopLevel/blob/master/toplevel.js )

它是您明确包含在页面中的库。当它到达页面并立即运行时,document.write() 是一个带有 style='display: none' 的

元素,它会立即停止浏览器对页面其余部分的解析,并隐藏纯文本结果(纯文本是一个弃用的元素,它停止解释页面内容,并将所有 HTML 视为普通的未解析纯文本:&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/plaintext&quot; rel=&quot;noreferrer noopener nofollow&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/HTML/Element/plaintext&lt;/a&gt;)。&lt;/p&gt;&lt;p&gt;Toplevel 然后解析 &lt;plaintext&gt; 元素本身的文本内容(并进行一些模板化,这是库的要点),然后 document.write() 将生成的新内容手动写入页面。&lt;/p&gt;&lt;p&gt;你应该能够做类似的事情:注入(inject)一个 &lt;plaintext&gt; 元素来阻止浏览器解析页面,你自己解析它(或者用它做任何你想做的事),然后可能写出你喜欢的任何东西(包括原始内容)到您满意的页面。&lt;/p&gt;&lt;/p&gt; &lt;/div&gt; &lt;div style=&quot;margin-top: 20px; margin-bottom: 40px;&quot;&gt; &lt;p style=&quot;font-size: 20px;&quot;&gt;关于javascript - Chrome 扩展 - 在浏览器上加载 js 之前获取 Html DOM,我们在Stack Overflow上找到一个类似的问题: &lt;a href=&quot;https://stackoverflow.com/questions/30792670/&quot; rel=&quot;noreferrer noopener nofollow&quot; style=&quot;color: red;&quot;&gt; https://stackoverflow.com/questions/30792670/ &lt;/a&gt; &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;text-center&quot; style=&quot;margin-top: 40px;&quot;&gt; &lt;h3 style=&quot;font-size: 18px;&quot;&gt; &lt;span&gt;上一篇:&lt;a href=&quot;/article/1762975&quot; title=&quot;angularjs - 使用 ng-click 加载 ng-grid&quot;&gt;angularjs - 使用 ng-click 加载 ng-grid&lt;/a&gt;&lt;/span&gt; &lt;/h3&gt; &lt;h3 style=&quot;font-size: 18px;&quot;&gt; &lt;span&gt;下一篇:&lt;a href=&quot;/article/1762977&quot; title=&quot;javascript - ngRoute- 直接 url 不显示模板&quot;&gt;javascript - ngRoute- 直接 url 不显示模板&lt;/a&gt;&lt;/span&gt; &lt;/h3&gt; &lt;/div&gt; &lt;/div&gt; &lt;div style=&quot;width: 100%; margin-top: 30px;&quot;&gt; &lt;p&gt; &lt;font style=&quot;font-size: 20px;&quot;&gt;&lt;strong&gt;相关文章:&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/4242190&quot; title=&quot;javascript - 在 javascript 中滚动时隐藏标题的性能问题&quot;&gt;javascript - 在 javascript 中滚动时隐藏标题的性能问题&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/4293188&quot; title=&quot;javascript - 固定位置的音乐播放器&quot;&gt;javascript - 固定位置的音乐播放器&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/3793472&quot; title=&quot;javascript简写语法&quot;&gt;javascript简写语法&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/5302188&quot; title=&quot;javascript - NWJS 在长循环 JavaScript 期间更新进度条&quot;&gt;javascript - NWJS 在长循环 JavaScript 期间更新进度条&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/2290021&quot; title=&quot;javascript - jQuery Accordion - 访问时打开的第一个选项卡&quot;&gt;javascript - jQuery Accordion - 访问时打开的第一个选项卡&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/4199936&quot; title=&quot;html - 如何将图片对齐到单选按钮的同一行?&quot;&gt;html - 如何将图片对齐到单选按钮的同一行?&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/5870726&quot; title=&quot;javascript - multer 文件上传不起作用&quot;&gt;javascript - multer 文件上传不起作用&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/299768&quot; title=&quot;html - 如何判断 DOM 元素是 HTML 还是 SVG?&quot;&gt;html - 如何判断 DOM 元素是 HTML 还是 SVG?&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/1845447&quot; title=&quot;javascript - 将 ReactDOM.createPortal 插入元素作为目标容器的第一个子元素(而不是最后一个子元素)&quot;&gt;javascript - 将 ReactDOM.createPortal 插入元素作为目标容器的第一个子元素(而不是最后一个子元素)&lt;/a&gt; &lt;/p&gt; &lt;p style=&quot;margin: 0 auto; margin-top: 5px;&quot;&gt; &lt;a href=&quot;/article/217747&quot; title=&quot;javascript - 取消后如何继续事件传播?&quot;&gt;javascript - 取消后如何继续事件传播?&lt;/a&gt; &lt;/p&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;div class=&quot;footer text-center&quot; style=&quot;float: left; width: 100%; margin-top: 40px;&quot;&gt; &lt;p&gt; &lt;font color=&quot;gray&quot;&gt;&amp;copy;2023 &lt;/font&gt;&lt;a href=&quot;/&quot;&gt;&lt;font color=&quot;gray&quot;&gt;IT工具网&lt;/font&gt;&lt;/a&gt; &amp;nbsp;&lt;a href=&quot;/article/7294988&quot; rel=&quot;nofollow&quot;&gt;&lt;font color=&quot;gray&quot;&gt;联系我们&lt;/font&gt;&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;script&gt;var _hmt = _hmt || [];(function() { var hm = document.createElement(&quot;script&quot;); hm.src = &quot;https://hm.baidu.com/hm.js?d26f2298d3a7fe583e547d2101e22936&quot;; var s = document.getElementsByTagName(&quot;script&quot;)[0]; s.parentNode.insertBefore(hm, s);})();&lt;/script&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6220481272339728&quot; crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js&quot;&gt;&lt;/script&gt;&lt;script type=&quot;text/javascript&quot; src=&quot;https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js&quot;&gt;&lt;/script&gt; &lt;script type=&quot;text/javascript&quot; src=&quot;/static/js/highlight-10.1.2.min.js&quot;&gt;&lt;/script&gt; &lt;script&gt;hljs.initHighlightingOnLoad();&lt;/script&gt; &lt;script type=&quot;text/javascript&quot;&gt; $(&quot;code&quot;).each(function(){ var codeHTML = $(this).prop(&quot;innerHTML&quot;); var newCodeHTML = codeHTML.replace(new RegExp(&quot;&lt;/.*&gt;&quot;, &quot;g&quot;), &quot;&quot;); newCodeHTML = newCodeHTML.replace(new RegExp(&quot;&lt;&quot;, &quot;g&quot;), &quot;&amp;lt;&quot;); $(this).html(newCodeHTML); }) &lt;/script&gt;&lt;/body&gt;&lt;/html&gt; </plaintext> </div></p> </div> </div> <div class="margin-bottom padding-p padding-p-line" align="center"> <span class="tips-margin-tip"><img src="/css/fonts/eye.svg" onload="look(1650168,'look')"/><span id="article-look-2">24</span></span> <span class="tips-margin-tip tips-margin-tip-click" onclick="look(1650168,'heart')"><img src="/css/fonts/heart.svg" /><span class="heart-p">4</span></span> <span class="tips-margin-tip tips-margin-tip-click" onclick="look(1650168,'heartbreak')"><img src="/css/fonts/heartbreak.svg" /><span class="heartbreak-p">0</span></span> </div> </div> <div class="content-p"> <div> 文章推荐: <a class="a-tag" href="/article/20/1650170/detail.html" target="_blank">javascript - ngRoute- 直接 url 不显示模板</a> </div> <div> 文章推荐: <a class="a-tag" href="/article/20/1650169/detail.html" target="_blank">php - 如何从管理员端注销php中的所有事件登录用户</a> </div> <div> 文章推荐: <a class="a-tag" href="/article/20/1650167/detail.html" target="_blank">angularjs - 使用 ng-click 加载 ng-grid</a> </div> <div> 文章推荐: <a class="a-tag" href="/article/20/1650166/detail.html" target="_blank">php - Vimeo API : streaming upload using HTTP PUT and blueimp's jQuery fileupload</a> </div> </div> <div class="content-p"> <ul class="like-article"> <li> <a class="a-tag" href="/article/23/6462685/detail.html" target="_blank">java - <html :html></html:html> and <html></html> 之间的区别</a> <p>大家好, 我看到了来自 java 项目中的 jsp 页面。 想问一下这些html标签有什么区别。 请多多指教。 示例代码如下: 最佳答案 使用struts-html标签库,其中只是普</p> </li> <li> <a class="a-tag" href="/article/22/2411203/detail.html" target="_blank">html - HTML 页面中损坏的 HTML</a> <p>我有一个页面,我正在从电子邮件中读取 HTML。 有时,来自电子邮件的文本包含 HTML 和 CSS,它完全改变了我的页面样式。 我不希望我的页面样式因此受到影响。我如何严格阅读特定 div(框)内的</p> </li> <li> <a class="a-tag" href="/article/23/7806465/detail.html" target="_blank">html - HTML 中的图像 - HTML 表中行之间的间距</a> <p>我知道有类似的问题,但我想对我的特定代码进行一些输入。 我有一个图像,我将其切成 9 块,并创建了一个 3x3 HTML 表来显示它。 但是我的表在行之间有空格,但在列之间没有空格。我没有使用任何 C</p> </li> <li> <a class="a-tag" href="/article/23/6744344/detail.html" target="_blank">html - 为什么我的本地 html 链接会转到父文件夹而不是 .html?</a> <p>编辑:Waylan 的回答成功了!谢谢! 我正在尝试压缩文档的 .html 文件以发送给客户。目标是获得与浏览实际网站相同的体验。 打开 .html 文件时,单击的任何链接都会转到父文件夹,而不是特定</p> </li> <li> <a class="a-tag" href="/article/23/6237391/detail.html" target="_blank">html - 为什么我的本地 html 链接会转到父文件夹而不是 .html?</a> <p>编辑:Waylan 的回答成功了!谢谢! 我正在尝试压缩文档的 .html 文件以发送给客户。目标是获得与浏览实际网站相同的体验。 打开 .html 文件时,单击的任何链接都会转到父文件夹,而不是特定</p> </li> <li> <a class="a-tag" href="/article/23/3418528/detail.html" target="_blank">html - 如何解析和规范化来自不同 HTML 生成器的 HTML?</a> <p>这是 question 的扩展.我正在尝试解析嵌入在 Blogger 博客的 XML 备份中的 HTML 片段,并用 InDesign 标签重新标记它们。 Blogger 并未对其任何帖子的 HTML</p> </li> <li> <a class="a-tag" href="/article/23/3296969/detail.html" target="_blank">html - html 元素之间的换行符破坏了 html 布局</a> <p>我知道在 html 中元素之间的换行符被视为空格,但我认为当您尝试使用响应式布局时这非常可怕。 例如,这里我们有预期和正确的行为,但要获得它,我必须删除元素之间的 html 中的换行符: https:</p> </li> <li> <a class="a-tag" href="/article/23/3278790/detail.html" target="_blank">html - 将带有 html 标签的文本显示为 html</a> <p>我正在尝试将文本文件显示为 html。我正在使用 ionic 。我正在发送一个 html 格式的响应,但在一个文本文件中发送到配置文件页面。它在 .ts 页面的变量名中。 @Component({ </p> </li> <li> <a class="a-tag" href="/article/23/3205878/detail.html" target="_blank">html - 如何在 html 中显示 html?</a> <p>假设我有一个 html 文档: test 我想在浏览器中显示该代码。然后我会创建类似的东西: &lt;html&gt;test&lt;html&gt; 为了在中间制作 gubbins,我有一个函数</p> </li> <li> <a class="a-tag" href="/article/22/3102688/detail.html" target="_blank">html - HTML 元素和 HTML 标签有什么区别?</a> <p>HTML 元素和 HTML 标签有什么区别?渲染有什么区别吗?使用标签或元素时有什么特殊注意事项吗? 最佳答案 是一个标签,特别是一个开始标签 也是一个标签,一个结束标签 This is a para</p> </li> <li> <a class="a-tag" href="/article/22/2904318/detail.html" target="_blank">html - 降低 html 表格高度和过度滚动 - HTML</a> <p>我有这个表格的模态形式。该表正在填充大量数据,但我不想分页。相反,我想以模式形式降低表格的高度并为表格添加溢出。下面是我的代码,但它不起作用。 请问我该如何实现? CSS #table{ </p> </li> <li> <a class="a-tag" href="/article/22/2768310/detail.html" target="_blank">html - 查看 HTML 代码而不是呈现的 HTML</a> <p>我记得有一个 Linux 命令可以从给定的 URL 返回 HTML 代码。您可以将 URL 作为此命令的参数,然后返回 HTML 代码,而不是在浏览器中输入 URL。 哪个命令执行此操作? 最佳答案 </p> </li> <li> <a class="a-tag" href="/article/19/1278897/detail.html" target="_blank">html - 在 html 中显示 html</a> <p>我有一个 html 页面,我想在其中包含另一个有很多链接的 html 页面。我能够使用 iframe 实现它,但我希望 iframe 内的页面具有与原始页面相同的文本和链接颜色属性,我不想要滚动条,我</p> </li> <li> <a class="a-tag" href="/article/19/1270651/detail.html" target="_blank">html - 如何从另一个 HTML 加载部分 HTML?</a> <p>我正在使用 HTML 写一本书。如果我把它写在一个 html 文件中,整个代码就会变长,所以我想将每一章保存到不同的文件中,然后将它们加载到主 html 中。我的意思是有像 chapter1.html</p> </li> <li> <a class="a-tag" href="/article/19/1189169/detail.html" target="_blank">html - 将 html 页面重定向到另一个 html</a> <p>在显示之前,我必须将一个网站重定向到另一个网站。我试过使用 .htaccess,但它给我带来了问题。我也使用过 javavscript 和 meta,但在加载我要从中传输的页面之前它不起作用。帮助? </p> </li> <li> <a class="a-tag" href="/article/17/659646/detail.html" target="_blank">html - 将网页 html 转换为电子邮件 html</a> <p> 关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。</p> </li> <li> <a class="a-tag" href="/article/17/655422/detail.html" target="_blank">html - 使用 html 打印 "<html>"</a> <p>如何打印“html”标签,包括“”?如何在不使用文本区域和 Javascript 的情况下对任何标签执行此操作? 最佳答案 使用HTML character references : &lt;html</p> </li> <li> <a class="a-tag" href="/article/17/678305/detail.html" target="_blank">html - 如何将 html.slim 文件转换为 html 或 html.erb?</a> <p>我需要将 Ruby on Rails 应用程序中的 html.slim 文件转换为 html.erb。有什么简单的方法吗?我尝试了 Stack Overflow 和其他网站中列出的许多选项。但对我没有</p> </li> <li> <a class="a-tag" href="/article/23/8355079/detail.html" target="_blank">html - 没有 <html> 标签可以创建 HTML 文档吗?</a> <p> 这个问题在这里已经有了答案: Is it necessary to write HEAD, BODY and HTML tags? (6 个答案) 关闭 8 年前。 我在 gitHub 上找到了这个</p> </li> <li> <a class="a-tag" href="/article/23/7979079/detail.html" target="_blank">html - 什么是加载外部资源的 HTML 元素列表? (HTML 电子邮件)</a> <p>如果不允许通过 JavaScript 进行额外的 DOM 操作,我正在寻找可以加载外部资源的元素列表。我正在尝试使用 HTML 查看器托管来自第三方的电子邮件,当发生这种情况时,我需要删除任何自动加载</p> </li> </ul> </div> </div> <div class="resource col-xs-3 col-sm-3 col-md-3 col-lg-3"> <div class="content-p content-p-comment"> <div class="phone-current phone-current-float"> <img alt="" src="/images/phone/manphone.jpeg"> </div> <div class="phone-current-float phone-current-style"> 可可西里 </div> <div class="phone-current-summary"> <span><strong>个人简介</strong></span> <p> 我是一名优秀的程序员,十分优秀! </p> </div> </div> <div class="content-p content-p-comment"> <article class="p-list"> <div class="art-margin" style="border-bottom: 1px solid #f3f0f0; padding-bottom: 5px;"> <strong>作者热门文章</strong> </div> <ul class="recomment-list-user"> <li><a class="a-tag" href="/article/20/1244996/detail.html" target="_blank">android - RelativeLayout 背景可绘制重叠内容</a></li> <li><a class="a-tag" href="/article/20/1244985/detail.html" target="_blank">android - 如何链接 cpufeatures lib 以获取 native android 库?</a></li> <li><a class="a-tag" href="/article/20/1244981/detail.html" target="_blank">java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用</a></li> <li><a class="a-tag" href="/article/20/1244977/detail.html" target="_blank">java - Android 文件转字符串</a></li> </ul> </article> </div> <div class="content-p content-p-comment"> <article class="p-list"> <div class="art-margin" style="border-bottom: 1px solid #f3f0f0; padding-bottom: 5px;"> <strong>滴滴打车优惠券免费领取</strong> </div> <img alt="滴滴打车优惠券" src="/images/ad/didiad.png" width="210px" onclick="window.open('/ad/didi', '_blank')"> </article> </div> <div class="content-p content-p-comment"> <article class="p-list"> <div class="art-margin" style="border-bottom: 1px solid #f3f0f0; padding-bottom: 5px;"> <strong>全站热门文章</strong> </div> <ul class="recomment-list-user"> <li><a class="a-tag" href="/article/92/8828943/detail.html" target="_blank">java中的集合ArrayList</a></li> <li><a class="a-tag" href="/article/92/8828942/detail.html" target="_blank">Svelte最新中文文档翻译(5)——基础标记</a></li> <li><a class="a-tag" href="/article/92/8828941/detail.html" target="_blank">Rust多线程中安全的使用变量</a></li> <li><a class="a-tag" href="/article/92/8828940/detail.html" target="_blank">应用程序取得当前目录和退出</a></li> <li><a class="a-tag" href="/article/92/8828939/detail.html" target="_blank">二进制与位操作</a></li> <li><a class="a-tag" href="/article/92/8828938/detail.html" target="_blank">React中的数据流管理</a></li> <li><a class="a-tag" href="/article/92/8828937/detail.html" target="_blank">分布式系统学习10:分布式事务</a></li> <li><a class="a-tag" href="/article/92/8828936/detail.html" target="_blank">stdio.h的缓冲机制解析</a></li> <li><a class="a-tag" href="/article/92/8828935/detail.html" target="_blank">ReentrantLock实现机制</a></li> <li><a class="a-tag" href="/article/92/8828934/detail.html" target="_blank">SdcbChats技术博客:数据库ID选型的曲折之路-从Guid到自增ID,再到Guid</a></li> </ul> </article> </div> </div> </div> </div> <div class="foot-font" style="border-top: 1px solid #f3f0f0; margin: auto; padding: 15px; background-color: #474443" align="center"> <a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank"><span class="color-txt-foot">Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号</span></a> <br/> <a href="/" target="_blank"><span class="color-txt-foot">广告合作:1813099741@qq.com</span></a> <a href="http://www.6ren.com" target="_blank"><span class="color-txt-foot">6ren.com</span></a> </div> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d1cb9c185f1642d6f07e22cafa330c45"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d46c26b2162aface49b8acf6cb7025e1"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>