我正在制作Chrome应用,我使用的是网络视图标记,类似于iframe。
有没有办法加载网页视图中的网页中途?
我试过了:
<webview onLoad="window.scroll(0, 150)" class="test" src="http://example.co.uk/test.aspx"></webview>
但似乎这很容易。我不相信它甚至可能。
由于
答案 0 :(得分:1)
假设代码会执行一段时间(由于CSP而赢了),window
会引用应用程序的页面,而不是嵌入页面。< / p>
您需要在嵌入页面的上下文中执行代码。
如果您之前使用过Chrome扩展程序,则会知道与网络内容互动的部分称为Content Script。
应用程序对<webview>
elements有类似的概念。您可以提前声明哪些页面在加载时应该获取哪个内容脚本,或者您可以显式加载内容脚本。
因此,假设您有一个文件content.js
,其中包含以下内容(请原谅双关语):
window.scroll(0, 150);
此外,假设您的应用页面内部有一个app.js
脚本,而变量webview
是对该<webview>
的引用。
然后,您可以让webview执行它:
声明性地,在加载页面之前调用webview.addContentScripts
(例如在从src
代码设置app.js
之前):
// Assuming <webview id="wv"></webview>
var webview = document.getElementById("wv");
webview.addContentScripts([{
name: "ExampleRule",
matches: ["http://example.co.uk/*"], // can be as narrow as you wish
js: ["content.js"]
}]);
webview.src = "http://example.co.uk/test.aspx";
明确地,当页面已经加载时:
// Assuming <webview id="wv" src="http://example.co.uk/test.aspx"></webview>
var webview = document.getElementById("wv");
webview.executeScript({file: "content.js"});
当然,可以使content.js
更复杂(例如,从应用程序接收命令)和/或更精确地控制操作的时间 - 但这些是此时的通用内容脚本问题,您可以在其他地方找到解决方案或提出新问题。