Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试将第二个参数传递给JS函数时出现语法错误_Javascript_Android_Webview - Fatal编程技术网

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:这是一个复制/粘贴问题。修复了复制/粘贴问题。修复了答案。这是一个复制/粘贴问题。修正了答案。