自动跳转到WebView的某个部分

时间:2016-10-06 10:49:49

标签: javascript jquery html webview google-chrome-app

我正在制作Chrome应用,我使用的是网络视图标记,类似于iframe。

有没有办法加载网页视图中的网页中途?

我试过了:

<webview onLoad="window.scroll(0, 150)" class="test" src="http://example.co.uk/test.aspx"></webview>

但似乎这很容易。我不相信它甚至可能。

由于

1 个答案:

答案 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更复杂(例如,从应用程序接收命令)和/或更精确地控制操作的时间 - 但这些是此时的通用内容脚本问题,您可以在其他地方找到解决方案或提出新问题。