如何从 JavaScript 滚动 <webview> 标签的内容?

Posted

技术标签:

【中文标题】如何从 JavaScript 滚动 <webview> 标签的内容?【英文标题】:How can I scroll content of <webview> tag from JavaScript? 【发布时间】:2015-02-26 12:39:50 【问题描述】: 原子壳:https://github.com/atom/atom-shell 版本:v0.20.2

我正在使用&lt;webview&gt; 标签嵌入页面。 &lt;webview&gt; 标签有shadow-root,其中有一个标签&lt;object id="browser-plugin-1 ...&gt;。所以我试着像这样为这个标签设置scrollTop值。

var webView = document.getElementById('webview tag id');
var elm = webView.shadowRoot.firstChild; // elm is object tag
console.log(elm.scrollTop);  // 0
elm.scrollTop = 100;
console.log(elm.scrollTop);  // 0

但是什么都没发生... 是否可以从外部控制&lt;webview&gt;标签滚动位置?

【问题讨论】:

【参考方案1】:

是的,改为这样做:

var webView = document.getElementById('webview tag id');
webView.executejavascript("document.querySelector('body:first-child').scrollTop=100");

【讨论】:

谢谢,@paul。我可以这样控制webView.executeJavaScript("document.querySelector('body').scrollTop=100;");【参考方案2】:

可以通过 WebView.executeJavaScript(code) 函数执行任何类型的 javascript,该函数将评估 WebView 中的代码。

要访问您的元素,您首先必须等待 WebView 加载,然后执行 javascript。

var webView = document.getElementById('webView');
webView.addEventListener('did-finish-load', scrollElement );

function scrollElement()
    var code = "var elm = document.querySelector('body:first-child'); elm.scrollTop = 100;";
    webView.executeJavaScript(code);

注意:此代码未测试,可能有语法错误。

Source (AtomShell's WebView tag documentation)

【讨论】:

以上是关于如何从 JavaScript 滚动 <webview> 标签的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Web 驱动程序采样器(J 表)和 javascript 和 selenium wedriver 向上和向下滚动到任何元素

如何知道滚动到元素是在 Javascript 中完成的?

Javascript如何控制Div的滚动条的位置?

如何从 .aspx 页面 javascript 调用 C# 方法后面的 Web 窗体代码

单击触发 JavaScript 的链接时,如何阻止网页滚动到顶部?

如何在 Web 浏览器中启用 Java