javascript and webview in android
javascript and webview in android
我是Android平台的初学者,在webview和javascript的帮助下制作了一个应用程序.当我在真实设备上运行我的代码时,它什么都不显示。这是我的代码:
公共类 MainActivity 扩展 AppCompatActivity { 网络视图 view_1,view_2; 图像视图图像视图;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getSupportActionBar().hide(); String url_1="<script type='"text/javascript” src='"http://ds.claymcenter.com/embed.js'">'n" + "requestAd('Rh8uGpcrlYMjXN1s', 'banner', 'ads', '320' , ‘50');'n" + "</script>'n" + " 'n" + "<div id='ads'></div>"; String url_2="https://paytm.com/"; view_1 = (WebView) findViewById(R.id.webViewGoogle); view_2 = (WebView) findViewById(R.id.webViewFacebook); view_1.getSettings().setJavaScriptEnabled(true); view_1.loadData(url_1, "text/html", null); view_2.getSettings().setJavaScriptEnabled(true); view_2.loadUrl(url_2); imageView = (ImageView) findViewById(R.id.imageView); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { view_1.reload(); view_2.reload(); } }); } }
我总是花很多时间试图让这样的事情发挥作用,我不记得我是如何做这些事情的,但这里有一些想法:
首先要尝试的是:将该字符串包装在url_1
<html><body>...</body></html>
标签中。
第二件要尝试的事情:当js文件完全加载时,你可能必须使用某种"onDocumentReady"事件来调用你的javascript。
要尝试的第三件事:像这样拆分函数调用:
String url_1="<script type='"text/javascript'” src='"http://ds.claymcenter.com/embed.js'">'n" +
"</script>'n" +
"<div id='ads'></div>";
String call = "javascript:requestAd('Rh8uGpcrlYMjXN1s', 'banner', 'ads', '320' , ‘50');'n"
使用 js 文件加载 html,然后使用 WebViewClient.onPageFinished()
查看何时加载 javascript 调用(不要剪切和粘贴此代码,这只是一个模板):
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// TODO: need to find out what is in url when html with js file loads
if (urlMatches()) {
view.loadData(call, "application/javascript", null); // not sure about the mime type
}
}
});
这就像"onDocumentReady",但在Java代码中这样做。
您可能会因为loadData
文档中的以下声明而陷入困境:
请注意,JavaScript 的同源策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用"data"以外的任何方案加载的内容,包括"http(s)"。若要避免此限制,请将 loadDataWithBaseURL() 与适当的基本 URL 一起使用。
因此,要尝试的最后一件事是使用 loadDataWithBaseURL
.
相关文章:
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- Node.js's Buffer.writeFloatBE in Javascript
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- Setting default onclick behavior for <img> tag in gene
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- javascript lazy loading in android hybrid app
- JavaScript in WebView - Android Studio
- android spinner in html/javascript
- javascript and webview in android
- Android JS in WebView.loadUrl()
- pushState in Android 4.0
- Android - Javascript in WebView
- Runtime Error in titanium app: android.database.CursorWindow
- Android pinch zoom in Javascript
- Webkit or W3C Notifications in Chrome for Android?
- Three.js Camera Orientation in Firefox for Android
- Closing a Webview in Android
- Android JavaScript in WebView
- WebSocket HTML5 in the phonegap for android