Javascript 尝试将第二个参数传递给JS函数时出现语法错误
以下工作:Javascript 尝试将第二个参数传递给JS函数时出现语法错误,javascript,android,webview,Javascript,Android,Webview,以下工作: loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'blah');"); 我做错了什么?将所有“字符”替换为 (从此处复制/粘贴,因为它们看起来彼此相似) 在下面的评论之后编辑。 第一个失败的命令: loadUrl("javascript:HtmlViewer.showHTML"
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'blah');");
我做错了什么?将所有“字符”替换为 (从此处复制/粘贴,因为它们看起来彼此相似) 在下面的评论之后编辑。 第一个失败的命令:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'document.forms[0].elements['MYHiddenValue'].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素['MYHiddenValue'].value');”;
这有一对单引号,当该行执行并生成字符串时,将导致语法错误。它应该产生一对转义单引号,因此该行应该包含一个“转义”反斜杠:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'document.forms[0].elements[\\'MYHiddenValue\\'].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素[\\'MYHiddenValue\\\'].value');”;
第二种选择是使用双引号,并在第一阶段使用单个反斜杠对每个引号进行转义,如:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'document.forms[0].elements[\"MYHiddenValue\"].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素[\'MYHiddenValue\'].value');”;
第二个命令在“MYSecondHiddenValue”上也有类似的错误
第一个命令没有失败的原因是,它通过添加三个单独的字符串来构建html字符串,这不会导致报价问题
但这也使得这三个命令彼此不同。第一个命令添加document.forms[0].elements['MYHiddenValue']的值,另外两个命令添加字符串“document.forms[0].elements…value”。因此,如果不知道showHTML()的确切功能,我们就不知道哪一个是正确的。将所有“字符”替换为 (从此处复制/粘贴,因为它们看起来彼此相似) 在下面的评论之后编辑。 第一个失败的命令:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'document.forms[0].elements['MYHiddenValue'].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素['MYHiddenValue'].value');”;
这有一对单引号,当该行执行并生成字符串时,将导致语法错误。它应该产生一对转义单引号,因此该行应该包含一个“转义”反斜杠:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'document.forms[0].elements[\\'MYHiddenValue\\'].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素[\\'MYHiddenValue\\\'].value');”;
第二种选择是使用双引号,并在第一阶段使用单个反斜杠对每个引号进行转义,如:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements['MYHiddenValue'].value+'</html>', 'document.forms[0].elements[\"MYHiddenValue\"].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素[\'MYHiddenValue\'].value');”;
第二个命令在“MYSecondHiddenValue”上也有类似的错误
第一个命令没有失败的原因是,它通过添加三个单独的字符串来构建html字符串,这不会导致报价问题
但这也使得这三个命令彼此不同。第一个命令添加document.forms[0].elements['MYHiddenValue']的值,另外两个命令添加字符串“document.forms[0].elements…value”。因此,如果不知道showHTML()的确切功能,我们就不知道哪一个是正确的。好吧,现在看看您的代码,我可以看出这一点
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements[’MYHiddenValue’].value+'</html>', 'document.forms[0].elements[’MYHiddenValue’].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素['MYHiddenValue'].value');”;
实际上是一个大字符串(或两个相连的字符串),请尝试将其更改为:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements[’MYHiddenValue’].value+'</html>'", "'document.forms[0].elements[’MYHiddenValue’].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value+'',“'document.forms[0]。元素['MYHiddenValue'].value');”;
也许吧?好吧,现在看看你的代码,我可以看出这一点
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements[’MYHiddenValue’].value+'</html>', 'document.forms[0].elements[’MYHiddenValue’].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value++,'document.forms[0]。元素['MYHiddenValue'].value');”;
实际上是一个大字符串(或两个相连的字符串),请尝试将其更改为:
loadUrl("javascript:HtmlViewer.showHTML" + "('<html>'+document.forms[0].elements[’MYHiddenValue’].value+'</html>'", "'document.forms[0].elements[’MYHiddenValue’].value');");
loadUrl(“javascript:HtmlViewer.showHTML”+”(“”+document.forms[0]。元素['MYHiddenValue'].value+'',“'document.forms[0]。元素['MYHiddenValue'].value');”;
也许吧?我相信这就是问题所在。在您的第一个(工作)示例中 您有一个字符串,我认为它只需要进行评估。JavaScript将其视为如下所示的字符串,但这不是您想要的
'document.forms[0].elements[’
我相信,如果在这个不起作用的示例中删除外部的一对单引号,它将起作用,代码将对此进行评估。如果您需要它只是一个字符串,那么您需要转义内部的单引号,如中所示
'document.forms[0].elements[\'MYHiddenValue\'].value'
我相信这就是问题所在。在您的第一个(工作)示例中 您有一个字符串,我认为它只需要进行评估。JavaScript将其视为如下所示的字符串,但这不是您想要的
'document.forms[0].elements[’
我相信,如果在这个不起作用的示例中删除外部的一对单引号,它将起作用,代码将对此进行评估。如果您需要它只是一个字符串,那么您需要转义内部的单引号,如中所示
'document.forms[0].elements[\'MYHiddenValue\'].value'
代码中有奇怪的字符,特别是有些单引号不是单引号字符(在“MYHiddenValue”字符串周围)。@Pointy:这是一个复制/粘贴问题。修复了代码中的奇怪字符,特别是有些单引号不是单引号字符(围绕“MYHiddenValue”字符串)。@Pointy:这是一个复制/粘贴问题。修复了复制/粘贴问题。修复了答案。这是一个复制/粘贴问题。修正了答案。