Javascript 通过google打包应用程序访问网站的DOM
我的目标是为chrome编写一个应用程序,通过XhtPrequest将网页DOM的详细信息传递给本地web服务器。 为了访问网站的dom,通常将选项卡与以下内容脚本结合使用:Javascript 通过google打包应用程序访问网站的DOM,javascript,dom,google-chrome-extension,google-chrome-app,Javascript,Dom,Google Chrome Extension,Google Chrome App,我的目标是为chrome编写一个应用程序,通过XhtPrequest将网页DOM的详细信息传递给本地web服务器。 为了访问网站的dom,通常将选项卡与以下内容脚本结合使用: chrome.tabs.create({ url: "www.example.com" }); chrome.tabs.executeScript(null, {file: "content_script.js"}); 然后使用消息传递系统将内容传递给后台脚本 不幸的是,当我这样做的时候,我需要向清单中添加“tabs”权
chrome.tabs.create({ url: "www.example.com" });
chrome.tabs.executeScript(null, {file: "content_script.js"});
然后使用消息传递系统将内容传递给后台脚本
不幸的是,当我这样做的时候,我需要向清单中添加“tabs”权限,这对于打包的应用程序是不允许的,仅对于扩展。我需要实现一个打包的应用程序,因为在通常的扩展中,不允许套接字连接(我有时需要)
我还尝试了这里的建议:
但是,
chrome.app.window.create
仅适用于本地html文件,不适用于外部网站
我的问题是:
(如何)在打包的应用程序中访问网站的dom是可能的?您可以尝试使用用于Chrome应用程序的方法并通过该方法注入自定义脚本
请记住在清单文件中指定
“webview”
权限 非常感谢!我完全按照你说的做了,约瑟夫·波特利。
守则:
main.js
chrome.app.window.create('webview.html', {},
function (createdWindow) {
var win = createdWindow.contentWindow;
win.onload = function () {
var webview = win.document.querySelector('#webview');
webview.setAttribute("src", "http://www.example.com");
webview.addEventListener("contentload", function () {
webview.executeScript({file: "content_script.js"}, function(result) {});
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if(request.dom) {
plugin.sendDom(request.dom, request.browser);
}
});
});
}
});
...
var body = document.getElementsByTagName("body")[0];
var dom = {root: domTraverser.recurseDomChildren(body)};
chrome.runtime.sendMessage({dom:dom, browser: getBrowserName()});
webview.html
<!doctype html>
<html>
<body>
<webview id="webview" style="height:100%;width:100%"/>
</body>
</html>