2015-03-31 125 views
4

我想显示一个页面包含HTML在JavaScript与Android webview与下面的code.But这似乎并不工作。任何人都可以帮助我。用JavaScript的HTML没有越来越加载在Android网络视图

公共类MainActivity扩展ActionBarActivity {

WebView browser; 


@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.activity_main); 
    browser = (WebView) findViewById(R.id.webView); 
    browser.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
    browser.setWebViewClient(new Callback()); 
    browser.getSettings().setJavaScriptEnabled(true); 




    loadTime(); 
} 


void loadTime() { 

    String page = "<html>" 
+"<head>" 
+"<title>chat window</title>" 
+"<script type=\"text/javascript\">" 

+ "var bccbId = Math.random(); document.write(unescape('%3Cdiv id=' + bccbId + '%3E%3C/div%3E'));" 
+" window._bcvma = window._bcvma || [];" 
+" _bcvma.push([\"setAccountID\", \"423771628801258096\"]);" 
+" _bcvma.push([\"setParameter\", \"WindowParameters\", \"vr=&vi=&ve=" + gblQnbVars["gUserEmail"] + "&vp=" + gblQnbVars["gMobileNum"] + "&vn= "+ gblQnbVars["gCustomerFirstName"]+ "&lc=\"]);" 
    +"var bcLoad = function(){" 
    + " if(window.bcLoaded) return; window.bcLoaded = true;" 
    +" var vms = document.createElement(\"script\");" 
    +"vms.type = \"text/javascript\";" 
    +" vms.async = true;" 
    +" vms.src = ('https:'==document.location.protocol?'https://':'http://') + \"vmss.boldchat.com/aid/423771628801258096/bc.vms4/vms.js\";" 
    +"var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);" 
    +"};" 
    +"if(window.pageViewer && pageViewer.load) pageViewer.load();" 
+" else if(document.readyState==\"complete\") bcLoad();" 
+" else if(window.addEventListener) window.addEventListener('load', bcLoad, false);" 
+" else window.attachEvent('onload', bcLoad);" 
    +    "function FireBoldChat() {" 
          +"  try {" 
             +  " _bcvmw.chatWindow({" 
                      + "type: \"chat\"," 
                      + "rdid: \"\"," 
                      + "cwdid:\"1504531236710990857\"," 
                      + "ve:\"<%=visitor email%>\"," 
                      + "vp:\"<%=visitor phone%>\"," 
                      + "vn:\"<%=visitor name%>\","                      
                      + "embed: true" 
              + "});" 
           +" } catch (e) {" 
               +"setTimeout(FireBoldChat, 500)" 
           +" }" 
       +" };" 
    +" </script>" 


+"</head>" 
+"<body onload=\"FireBoldChat();\">" 
+"</body>" 
+"</html>"; 

    System.out.println(page); 
    browser.loadDataWithBaseURL("x-data://base", page, 
      "text/html", "UTF-8", 
      null); 

} 

private class Callback extends WebViewClient { 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     loadTime(); 

     return(true); 
    } 
} 

每当我打开我的此网页的默认浏览器的正常使用。我在哪里做错了。

+1

由于HTML会调用JavaScript,因此无法制作您的网页。而不是相反。 – jmcmahon443 2015-06-01 20:35:28

+0

请给出更多关于“gblQnbVars”基本代码的声明,因为它显示错误。 – 2015-06-08 08:28:50

回答

1

loadData()文档说

需要注意的是JavaScript的同源策略意味着脚本中使用这种方法将无法访问内容加载的网页运行加载使用比“数据”以外的任何方案,包括“ HTTP(S)”。为了避免这种限制,请使用loadDataWithBaseURL()和适当的基本URL。

现在你使用loadDataWithBaseURL(),但你的基本URL是x-data://base但你尝试加载从HTTP(S)的脚本://vmss.boldchat.com。我认为这可能会导致你的问题。

1

我得到了同样的问题。我刚刚更换

vms.src="https://" +\"vmss.boldchat.com/aid/423771628801258096/bc.vms4/vms.js\";" 
1

这将来到如不及时补充必要的Java脚本文件

运行前,请检查您的XML格式是确定

<?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/webview" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
/> 

更多:http://developer.android.com/guide/webapps/webview.html

和您可能不会拨打布局 公共课MainActivity延伸活动{

@Override 
protected void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.activity_main); 
WebView webView = (WebView) 
browser = findViewById(R.id.webview); 
browser.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
browser.setWebViewClient(new Callback()); 
browser.getSettings().setJavaScriptEnabled(true); 


} 

}

尝试这一段时间,这将是帮助

感谢

1

看你的代码,没有看到在HTML文件中的运行时间变化。 所以创建HTML文件使用上面的页面变量&放在资产文件夹。
一旦下面的代码完成这件事写:

public class ViewWeb extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.webview); 
      WebView vistaWeb = (WebView) findViewById(R.id.webView1); 
      vistaWeb.setWebChromeClient(new Callback()); 
      vistaWeb.setWebViewClient(new Callback()); 
      vistaWeb.clearCache(true); 
      vistaWeb.clearHistory(); 
      vistaWeb.getSettings().setJavaScriptEnabled(true); 
     vistaWeb.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
      vistaWeb.loadUrl("file:///android_asset/aboutcertified.html"); // now it will not fail here 
     } 
    } 

希望这会帮助你。

1

我怀疑变量gblQnbVars我没有在您的代码段中找到任何对它的引用。你能确认它是否可以在你的代码中访问吗?可能是抛出错误。