Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaWebView中的JavaScript注入_Javascript_Java_Android_Webview - Fatal编程技术网

JavaWebView中的JavaScript注入

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("

晚上好,, 我试图让下面的JavaScript片段在Android应用程序的WebView中运行。相信我,我在这里研究了好几页,我也做了类似的研究。 这就是片段:

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。谢谢你们的帮助,伙计们。:)