不能使用jquery访问通过Google chrome内容脚本注入的iframe内容
can't access content of iframe injected via google chrome content script using jquery
所以我是通过注入一个内容脚本到正文创建这个chrome扩展:
这是我的javascript:
. js:
$(document).ready(function(){
Url = chrome.extension.getURL('etc.html');
link = '<iframe src="' + Url + '" id="frame" scrolling="no" frameborder="0px"></iframe>';
$('body').prepend(link);
alert($('.test').html());
});
这是etc.html的内容应该放到iframe
etc.html:
<div class="test">An html</div>
这是manifest。json
manifest.json:
{
"content_scripts": [ {
"all_frames": true,
"js": [ "js/jquery.js", "js/test.js" ],
"matches": [ "http://*/*", "https://*/*" ],
"run_at": "document_end"
} ],
"description": "Testing",
"name": "test",
"permissions": [ "tabs", "http://*/*", "https://*/*", "notifications", "management", "unlimitedStorage", "bookmarks", "contextMenus", "cookies", "geolocation", "history", "idle" ],
"version": "2.0.0.53"
}
iframe已成功插入正文,iframe内容出现,并且我通过chrome检查器看到了它…
但是当js运行alert($('.test').html());
行时,它返回null而不是返回html....在开发这样的扩展
我也尝试了$('#frame').contents().find('.test').html();
,但无济于事
我很确定你不能那样做。现在我在网上找不到任何支持这个的东西,但我记得有这个问题。我认为这样做的原因是其他脚本和扩展不会扰乱你的etc.html。
你能做的就是让javascript在etc.html内部访问并修改它的DOM。如果你需要它与注入iframe的内容脚本通信,你可以通过在后台页面传递消息来实现:http://code.google.com/chrome/extensions/messaging.html
例如,您可以通过简单的一次性请求做到这一点:
etc.html
chrome.extension.sendRequest(msg)
backround.html
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
chrome.tabs.sendRequest(sender.tab.id, request);
});
contentscript.js
chrome.extension.onRequest.addListener(function(req, sender, sendResponse) {
//do stuff
}
你可以用类似的方法处理postMessage和onMessage。如果你需要更多帮助,请告诉我。
相关文章:
- 性能:动态脚本注入与服务器渲染脚本
- FireFox扩展对TinyMCE编辑器执行脚本注入
- 如何防止脚本注入
- 防止使用 innerHTML 进行脚本注入
- 如何将CSS样式应用于由Javascript脚本注入和样式化的HTML,这是我无法控制的
- 将内容脚本注入到不同扩展名的操作弹出窗口中的 iframe 中
- 交叉骑士 - 如何将脚本注入特定选项卡?以及如何重新加载特定选项卡
- BHO Internet Explorer插件-脚本注入问题
- 将脚本注入其他人的最简单方法是什么's域
- 获取当前活动的输入字段.Chrome内容脚本.脚本注入
- 在web上使用脚本注入的自动化测试
- Chrome扩展:连接"内容脚本"注入DOM
- 不能使用jquery访问通过Google chrome内容脚本注入的iframe内容
- 什么阻止Require'ed脚本注入更多的脚本标签?
- 跨站点脚本注入
- 为什么要在通过谷歌Chrome扩展将脚本注入预先存在的网页后删除脚本
- 如何对外部脚本注入依赖项
- Chrome扩展如何将我的内容脚本注入所有Facebook页面
- 使用java脚本注入另一个页面
- 如何在没有jQuery的情况下将脚本注入文档