Webview方式避免语法错误

时间:2015-06-29 23:53:58

标签: javascript android function syntax webview

无论我做什么,当我发送带有一些HTML代码的javascript时,我会收到很多不同的错误,如:

"Uncaught SyntaxError: missing ) after argument list", source:  (1)


"Uncaught SyntaxError: test is not a function", source:  (1) (yes it its -_-)

我的代码:

             wv.loadUrl("javascript:setMarcacao(alert('<font size></font>')");

任何解决方案?

我已经使用以下内容加载页面:

wv.loadDataWithBaseURL("www.thisdontmatteratall.com", html.toString(), "text/html", Constantes.HTML_ENCODING, "");

1 个答案:

答案 0 :(得分:0)

解决方案很简单,很难找/想,但其荒谬简单,因为html标签中的运算符&lt;&gt; ==&amp;也许其他元素如&#34;可以使原因非常不可预测,所以我做了什么:

首先使用Apache Commons获取代码和Escape:

例如:String newHtml = StringEscapeUtils.escapeHtml4(oldHtml) // oldHtml = String of ofc

现在你必须把它发送到javascript,但是你必须插入所有btw引号,但是再次,你不能使用正常的引用而且它本身,你需要把\之前,所以:

PS:第一个引用可以是正常的,其他引用可以是..

webview.loadUrl("javascript:function(" + JavaScriptArgsSTRING + ");
好吧,我知道我不是疯了,多数民众赞成我只是为了表明你必须注意的地方,现在是重要的部分:

在html中执行转义后,它会像bug一样奇怪,因为会改变运算符(不要问我,我不知道这些东西是如何工作的,但我知道它现在正在工作= D)

示例,1参见js函数

String JavaScriptArgsSTRING = " \""+ newHtml + "\"";

\" will make quotes REAL in the String, like every String s = ""; need

explaining in order:

 " before javascript => start the String args 
 " => stop the string and
 start variable space 
 \" => going to make real quote in the string, thats what the js FUNCION need to see 
 " => you need to stop the String
 start created by \" 
 + => concatenation of the string/html whatever you want to send, ofc html code need Escape

 newHtml => the var 

 + => concatenation 

 " => stop the variable \" => close the function arg inside REAL "
 (again, its what js function want to see)

 " => stop the String start created by the second \"

就是这样,如果你想在函数内部发送更多args,只需复制并粘贴如下:

String JavaScriptArgsSTRING =&#34; \&#34;&#34; + newHtml +&#34; \&#34; \&#34;&#34; + newHtml +&#34; \&#34; &#34;;

然后继续,只需添加更多内容并粘贴...(注意,当您在IDE中粘贴时,它会自动添加更多&#34;,所以请查看

我失去了2天寻找避免语法错误的方法,这就是工作的方式,至少对我来说......

抱歉糟糕的英语(有人会解决它= x)和一些愚蠢的解释(我不是真正的开发人员,但我喜欢与之合作)