【问题标题】:Inject Javascript to website after ran script in webview在 webview 中运行脚本后将 Javascript 注入网站
【发布时间】:2017-08-14 09:23:40
【问题描述】:

我想将我的 javascript 添加到远程网站。

我尝试使用 onPageFinished 方法,但它只能在脚本运行之前获取网站。网站必须从服务器获取所有数据,我必须等到它完成后才能将 js 添加到生成的元素中。

我要使用的所有元素都必须等到脚本生成它们

我如何知道网站已完全呈现? (运行所有脚本并生成所有 html)

编辑

我可以获得生成的 html,但它无济于事 (this)

我也尝试了很多解决方案,但都不起作用(thisthis

这是我的示例代码

webPreviewDocument.setWebViewClient(new WebViewClient(){
@Override  
public void onPageFinished(WebView view, String url) {
    webPreviewDocument.loadUrl("javascript:alert('Example');"); // just example
}
});
WebSettings webSettings = webPreviewDocument.getSettings();
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
webSettings.setLoadWithOverviewMode(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webPreviewDocument.loadUrl(mMaterialPreview.getPreviewUrl());

当 onPageFinished 调用时,页面正在加载预览内容,我必须等待几秒钟然后才能加载所有内容。我也尝试对 js 和 java 使用 sleepwait 但它不起作用

【问题讨论】:

  • 所以如果我理解你想在你不拥有的网站上运行你的 JS 文件?
  • 是的,我想做那个,你有什么建议吗?

标签: javascript java android webview android-webview


【解决方案1】:

你可以在你的 JS 文件中做这样的事情:

var init = function () {
    //here you write your functions that need to be excuted by example:
    $('.checkbox').on('change', checkCheckbox);
};
$(document).ready(init());

函数 init() 只能在文档加载后执行。 这个函数也是用 Jquery 写的。我不知道你是否使用它或知道那个。如果您还有其他问题,请提出

【讨论】:

  • 我已经尝试过了,但它不起作用。因为在Android中,当我加载一个页面时,它总是立即调用onPageReturn,尽管页面必须加载预览内容。例如:当您点击打开 Google Photo 中的图片时,它必须加载预览内容几秒钟才能显示出来。
  • 你能告诉我你的安卓代码吗?你能告诉我你是如何加载这些内容的吗?
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2017-07-15
  • 2018-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
相关资源
最近更新 更多