Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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
如何在Android KitKat WebView中运行javascript?_Javascript_Android_Android Webview_Android 4.4 Kitkat - Fatal编程技术网

如何在Android KitKat WebView中运行javascript?

如何在Android KitKat WebView中运行javascript?,javascript,android,android-webview,android-4.4-kitkat,Javascript,Android,Android Webview,Android 4.4 Kitkat,我的WebView中有以下代码 <script src="remote src" param1="value1" param2="value2" ... />; 剧本也很好。但是,正如我们所知,在KitKat中,WebView已经完全改变了,脚本应该按照 webView.evaluateJavascript(script, callback); 现在还不清楚如何在KitKat中运行我的脚本,该脚本与页面的其余部分一起呈现。只是研究了如何支持加载远程JS 我尝试了以下方法: 通过l

我的WebView中有以下代码

<script src="remote src" param1="value1" param2="value2" ... />;
剧本也很好。但是,正如我们所知,在KitKat中,WebView已经完全改变了,脚本应该按照

webView.evaluateJavascript(script, callback);

现在还不清楚如何在KitKat中运行我的脚本,该脚本与页面的其余部分一起呈现。

只是研究了如何支持加载远程JS

我尝试了以下方法:

通过loadUrl()加载文件file://....)具有远程js文件的绝对路径,即

使用远程js文件的绝对路径将html字符串加载到webview中

mWebView.loadDataWithBaseURL("content://com.example.remotejs/", htmlString, "text/html", "utf-8", null);
mWebView.loadDataWithBaseURL("http://labs.gauntface.co.uk/", htmlString, "text/html", "utf-8", null);
加载带有有效基本url和相对远程js文件的html字符串

mWebView.loadDataWithBaseURL("content://com.example.remotejs/", htmlString, "text/html", "utf-8", null);
mWebView.loadDataWithBaseURL("http://labs.gauntface.co.uk/", htmlString, "text/html", "utf-8", null);
脚本标记:


所有这些都奏效了。您能提供一个示例吗?我的源代码托管在这里:

如果脚本在传递给
loadDataWithBaseUrl
的内容中内联,那么它在KK中应该仍然可以正常执行。新的
evaluateJavaScript
API用于在当前加载到WebView中的文档的上下文中,在加载后执行脚本

在KK之前,开发人员会调用
loadUrl
传入
javascript:
URL以实现相同的效果。新的API简化了这一点,并允许在脚本运行时执行回调

希望这有助于澄清。

解决方案更简单

现在的问题是KitKat,但是Github

这个怎么样:

String jScript = "(function() {\n" +
                    "var p=document.getElementsByTagName('head')[0];\n" +
                    "var s=document.createElement(\"script\");\n" +
                    "s.type=\"text/javascript\";\n" +
                    "s.src=\"http://pathtoscript/jscript.js\";\n" +
                    "s.async = true;\n" +
                    "p.appendChild(s);\n" +
                "}\n" +
            "})();\n";

webView.evaluateJavascript(jScript, callback);

但在这种情况下,我不知道是否有可能获得回调。

您是否记得调用cource的
webView.getSettings().setJavaScriptEnabled(true)
,否则代码将不会在低于KitKat的Android下运行,因为您的
loadDataWithBseURL()
场景,您传递给它的字符串是您所显示的
标记吗?不,它是典型的html页面,从..开始。脚本应该仍然可以正常执行,但不会执行!!就在KitKatOk。你能分享剧本吗?如果没有,请尝试远程调试,以防抛出任何错误-请参阅无用的注释。我的问题是如何使用远程src执行scrit。我无法剪切它并将其作为方法evaluateJavascript()的参数。抱歉,我误解了。因此,您正在将html文件或字符串加载到WebView中,并加载类似以下内容的javascript:;加载“”作为loadBaseUrl的基本参数的位置?