通过Chrome扩展搜索页面内的javascript
Searching for for javascript within page via Chrome extension
我想建立一个简单的Chrome扩展,可以搜索当前活动选项卡的HTML/DOM,并在弹出窗口中打印出包含与某个源匹配的javascript的元素数量。
我在Chrome扩展指南中读到,内容脚本无法与页面上的其他javascript交互,甚至无法看到其他javascript,这让我相信这是不可能的。有人知道创建这种类型的扩展是否可行吗?
不久前我也做过类似的事情;我需要查看元素的onclick
和其他属性,这通常是不可能的:
值得注意的是,由页面和扩展共享的JavaScript对象会发生什么——例如,window.onload
事件。每个孤立的世界看到的都是它自己版本的对象。
有一种将代码注入页面上下文的技术。这样的代码可以到达窗口的JS上下文,然后将其传递给内容脚本。在我的情况下,我只是添加了一个额外的属性与JS附加节点。
// Fill inline handler copies
function fillClickHandlers(callback) {
var injected = function() {
// Note: This executes in another context!
// Note: This assumes jQuery in the other context!
$("[onclick]").each(function() {
this.dataset["onclick"] = this.attributes["onclick"].value;
});
$("[onsubmit]").each(function() {
this.dataset["onsubmit"] = this.attributes["onsubmit"].value;
});
$("[onload]").each(function() {
this.dataset["onload"] = this.attributes["onload"].value;
});
}
var s = document.createElement('script');
s.textContent = "(" + injected + ")();";
(document.head||document.documentElement).appendChild(s);
// Script is synchronously executed here
s.parentNode.removeChild(s);
callback();
}
// Erase inline handlers copies
function eraseClickHandlers(callback) {
$("[data-onclick], [data-onsubmit], [data-onload]").each(function() {
delete this.dataset.onclick;
delete this.dataset.onsubmit;
delete this.dataset.onload;
});
callback();
}
// Usage:
fillClickHandlers(function() {
doActualWork(function() {
eraseClickHandlers(doSomethingElse)
});
});
请注意,对于实际的<script>
标签,您可以自由地检查src
或textContent
属性。
相关文章:
- 多次运行相同的Javascript Chrome扩展
- JAVASCRIPT/Chrome:如何获得页面的扩展
- 未捕获的引用错误:未在Javascript(Chrome控制台)中定义文档
- 如何在 Javascript( Chrome Extension) 中使用.dll库
- JavaScript Chrome vs IE
- jquery javascript chrome/safari issue
- 如何从 JavaScript Chrome 扩展程序中的 URL 获取参数值
- Javascript/Chrome:是否可以访问's是在地址栏中键入的
- 安卓系统上Javascript-chrome中的跨浏览器Flash检测
- Javascript Chrome确认框延迟
- Javascript chrome错误中的数组长度
- TypeError:对象不是函数(JavaScript Chrome存储同步)
- 传递的参数没有明确说明javascript Chrome扩展
- 显示来自javascript Chrome书签的提示
- 简单的JavaScript Chrome扩展-打开一个URL-从输入文本修改
- V8 javascript:chrome与'这'上下文
- 如何创建在全屏应用程序上显示的Javascript/Chrome通知
- 为什么我的Javascript Chrome扩展代码不工作?(循环检查按钮)
- 如何复制和粘贴文本从一个选项卡到另一个javascript (chrome扩展)
- Javascript chrome扩展,点击页面上的所有元素只更新一半