如何在Android KitKat WebView中运行javascript?
我的WebView中有以下代码如何在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
<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的基本参数的位置?