JavaWebView中的JavaScript注入
晚上好,, 我试图让下面的JavaScript片段在Android应用程序的WebView中运行。相信我,我在这里研究了好几页,我也做了类似的研究。 这就是片段:JavaWebView中的JavaScript注入,javascript,java,android,webview,Javascript,Java,Android,Webview,晚上好,, 我试图让下面的JavaScript片段在Android应用程序的WebView中运行。相信我,我在这里研究了好几页,我也做了类似的研究。 这就是片段: function myFunction() { var selection = window.getSelection(); var range = selection.getRangeAt(0); var newNode = document.createElement("span"); newNode.setAttribute("
function myFunction() {
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var newNode = document.createElement("span");
newNode.setAttribute("style", "background-color: #FFF000;");
range.surroundContents(newNode);
}
我正在开发一个浏览器应用程序,我希望能够突出显示文本段落。为此,我制作了一个自定义文本选择菜单,其中包含一个onClickListener
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
webView.loadUrl(
"javascript:(function() { " +
"var element = document.getElementById('hplogo');"
+ "element.parentNode.removeChild(element);" +
"})()");
}});
这个例子非常好用,我想把它改编成我的JavaScript代码片段。我的代码如下:
webView.loadUrl("javascript:(function() { " +
"var selection = window.getSelection();" +
"var range = selection.getRangeAt(0);" +
"var newNode = document.createElement('span');"+
"sel.addRange(range);"+
"newNode.setAttribute('style', 'background-color: #FFF000;');"+
"range.surroundContents(newNode);"+
"})()");
这让我完全疯了。
提前感谢。问题在于您的javascript代码使用“sel.addRange”而不是“selection.addRange”
webView.getSettings().setJavaScriptEnabled(true)代码>可能也是必需的。感谢您的提醒,但这一定是在本文的复制/粘贴过程中发生的。我把它换回来了,但还是没有运气。JavaScript是由我启用的。谢谢马丁和约翰,但还是不走运。@DanielHegemann当你过滤log cat的I/chromium
时,它说了什么?约翰和马丁,我能说什么,它现在起作用了。“选择”是正确的,我已经看到了,因为Martin向我展示了如何调试WebView。谢谢你们的帮助,伙计们。:)