编程语言
首页 > 编程语言> > javascript-UIwebview中的CSS注入

javascript-UIwebview中的CSS注入

作者:互联网

我正在尝试使用示例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],消息:大小必须&gt ; = 0
E / KrollCallback(382):java.lang.IllegalArgumentException:大小必须> = 0E / AndroidRuntime(345):在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)

解决方法:

您应该使用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);");

标签:webview,uiwebview,css,javascript,android
来源: https://codeday.me/bug/20191208/2088910.html