无论我做什么,当我发送带有一些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, "");
答案 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)和一些愚蠢的解释(我不是真正的开发人员,但我喜欢与之合作)