0

有这样的行并且onLoad函数参数报告错误:

document.write("document.getElementById(\"my_iframe\").innerHTML = '<iframe src=\"http://MyDomain.com/index.php?accessing_from=\'+loc+\'\" style=\"border: none; min-height: 60px;\" onload=\"resizeCrossDomainIframe(\'iframe\', \'http://MyDomain.com\');\"> </iframe>'  ");

困扰我的部分是onload=\"resizeCrossDomainIframe(\'iframe\', \'http://MyDomain.com\');\"

我在此设置中遇到错误,但是当我删除函数参数并将其保留为resizeCrossDomainIframe() 一切正常时(就文档编写而言,但函数无法正常工作,因为它没有传递参数),所以我的问题是为什么这在参数时不起作用逃脱了吗?

----------------------已编辑 ----------

好的,在 MyDomain.com 我有文件 create_iframe.js :

document.write("<script type=\"text/javascript\"> function resizeCrossDomainIframe(id, other_domain) { var iframe = document.getElementById(id);  window.addEventListener('message', function(event) {if (event.data === \"reload\") top.location.reload(); if (event.origin !== other_domain) return;  if (isNaN(event.data)) return;  var height = parseInt(event.data) + 40; iframe.height = height + \"px\"; }, false); }</script> ");
document.write("<div id=\"wwiz_rooster\"></div>");
document.write("<script type=\"text/javascript\">");
document.write("var loc = window.location.host; ");
document.write("loc = \"http://\"+loc;");
document.write("alert(loc);");
document.write("document.getElementById(\"wwiz_rooster\").innerHTML = '<iframe src=\"MyDomain.com/index.php?accessing_from=\'+loc+\'\" style=\"border: none; margin-top: 15px; margin-bottom: 15px; width:986px; min-height: 60px;\" onload=\"resizeCrossDomainIframe(\\'rooster_iframe\\', \\'http://MyDomain.com\\');\"> </iframe>'  ");
document.write("</script>");

编辑:愚蠢的我....忘记将实际 ID 分配给 IFRAME !!!!! 安威 - 一切正常!并感谢您的帮助!!!!!!!

4

1 回答 1

1

您有太多嵌套字符串文字,其引号未正确转义。看着它成长:

resizeCrossDomainIframe('iframe', 'http://MyDomain.com');
<iframe src="http://MyDomain.com/index.php?…"
  style="border: none; min-height: 60px;"
  onload="resizeCrossDomainIframe('iframe', 'http://MyDomain.com');"
></iframe>
document.getElementById("my_iframe").innerHTML =
'<iframe src="http://MyDomain.com/index.php?accessing_from='+loc+'" \
  style="border: none; min-height: 60px;" \
  onload="resizeCrossDomainIframe(\'iframe\', \'http://MyDomain.com\');" \
></iframe>'
"document.getElementById(\"my_iframe\").innerHTML = \
  '<iframe src=\"http://MyDomain.com/index.php?accessing_from=\'+loc+\'\" \
    style=\"border: none; min-height: 60px;\" \
    onload=\"resizeCrossDomainIframe(\\'iframe\\', \\'http://MyDomain.com\\');\" \
  ></iframe>' \
"

您忘记在上一次迭代中将反斜杠加倍。您已经很幸运可以将撇号与双引号混合使用,否则它将成为一场噩梦,以至于您从愚蠢中醒来:

"document.getElementById(\"my_iframe\").innerHTML = \
  \"<iframe src=\\\"http://MyDomain.com/index.php?accessing_from=\"+loc+\"\\\" \
    style=\\\"border: none; min-height: 60px;\\\" \
    onload=\\\"resizeCrossDomainIframe(&quot;iframe&quot;, &quot;http://MyDomain.com&quot;); \\\" \
  ></iframe>\" "

顺便说一句,第三次迭代在我看来是错误的。为什么要在文档中编写纯 JS?如果你想输出它,最好把它放在<pre>标签里,但不要用 JavaScript 写。如果你想执行它(除非你document.write("<script>")在它前面放一个,否则你不会执行它),只需执行它 - 永远不要将代码作为字符串处理!


关于您发布在当前站点上创建 iframe 的脚本的目标,该脚本应仅包含以下内容:

var loc = …;
document.write('<iframe src="http://MyDomain.com/index.php?accessing_from='+loc+'" \
  style="border: none; min-height: 60px;" \
  onload="resizeCrossDomainIframe(\'iframe\', \'http://MyDomain.com\');" \
></iframe>');

尝试将其包含到测试页面中。

于 2013-02-08T13:40:03.390 回答