【问题标题】:CSS injection in UIwebviewUIwebview 中的 CSS 注入
【发布时间】:2011-08-02 23:46:45
【问题描述】:

我正在尝试使用https://gist.github.com/811993 发布的这个示例;我正在尝试为我的父母使用 www.baomoi.com 网站的自定义 css 文件,以使其更加简约和高对比度。此代码示例在加载时会导致强制关闭。我在 /Resources 文件夹中有 styles.css。如何确定导致错误的位置?

提前感谢大家的帮助。

https://gist.github.com/811993

在调试中,这是我得到的: E/KrollCallback(382): (kroll$1: app://app.js) [234,4575] 错误,调用:[callMethod UI.WebView.UI.WebView:event:load null],消息:大小必须 > = 0 E/KrollCallback(382): java.lang.IllegalArgumentException: 大小必须 >= 0E/AndroidRuntime(345): at org.appcelerator.titanium.kroll.KrollHandlerThread.run(KrollHandlerThread.java:86) E/AndroidRuntime(345): 引起: java.lang.IllegalArgumentException: 大小必须 >= 0 E/AndroidRuntime(345):在 java.io.ByteArrayOutputStream.(ByteArrayOutputStream.java:67) E/AndroidRuntime(345):在 org.appcelerator.titanium.util.TiStreamHelper.toByteArray(TiStreamHelper.java:106) E/AndroidRuntime(345):在 org.appcelerator.titanium.TiBlob.getBytes(TiBlob.java:120)

【问题讨论】:

    标签: javascript android css uiwebview webview


    【解决方案1】:

    您应该使用 evalJS,而不是使用 url 属性来注入您的 javascript。

    您可以从文件中读取本地 CSS 数据并插入如下:

    // read the css content from styles.css    
    var cssContent = Titanium.Filesystem.getFile('styles.css');
    
    // make it available as a variable in the webview    
    webview.evalJS("var myCssContent = " + JSON.stringify(String(cssContent.read())) + ";");
    
    // create the style element with the css content    
    webview.evalJS("var s = document.createElement('style'); s.setAttribute('type', 'text/css'); s.innerHTML = myCssContent; document.getElementsByTagName('head')[0].appendChild(s);");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多