如何用生成的javascript代码打开一个新窗口?

时间:2011-02-10 19:34:05

标签: javascript jquery

我正在尝试打开一个新窗口并编写一些元素和javascript标记。

代码看起来像,

var OpenWindow = window.open("ImagePreview.html", "mywindow","height=768,width=1024");
OpenWindow.document.write("<style type='text/css'>.normal{zoom:20%; -moz-transform:scale(0.2); cursor:pointer;}.notZoomed{zoom:20%; -moz-transform:scale(0.2); cursor:pointer;}.zoomed{zoom:100%; -moz-transform:scale(1); cursor:pointer;}</style>");
OpenWindow.document.write("<script type='text/javascript'>$(function(){$('#imageFullView').data('zoomed', false);$('#imageFullView').click(function(){$('#imageFullView').removeClass('normal');if($('#imageFullView').data('zoomed')){$('#imageFullView').removeClass('zoomed');$('#imageFullView').addClass('notZoomed');$('#imageFullView').data('zoomed', false);}else{$('#imageFullView').removeClass('notZoomed');$('#imageFullView').addClass('zoomed');$('#imageFullView').data('zoomed', true);}})");
OpenWindow.document.write("<img id='imageFullView' class='normal' src='" + data.previewImage + "' alt='img'/>");
OpenWindow.document.write("<br>");
OpenWindow.document.write("<center><a href='javascript:self.close()' target='_self'>Close</a></center>");

但是在尝试使用代码编写javascript标记时代码中断了。 如果我删除该行代码而不会中断。

这不是将javascript代码添加到网页window.open()的正确方法吗?

如何使用jquery做到这一点?

谢谢!

3 个答案:

答案 0 :(得分:4)

我的代码中没有关闭脚本标记。

你需要分解脚本标签,这样就不会弄乱页面的解析器。

...write("<script>...</sc"+"ript>");

为什么要写到新窗口?为什么不直接传递所需的信息作为查询字符串参数,并让新页面构建文档。

答案 1 :(得分:1)

您忘记了脚本的结束标记。

您可能必须分解结束脚本标记,例如将其放在单独的字符串中,这样它就不会结束编写脚本的脚本:...</scr'+'ipt>...

答案 2 :(得分:0)

假设您正在编写HTML,您有两种选择。

  1. 将脚本放在外部文件中
  2. 确保任何结束标记看起来不像结束标记。
  3. 如果您使用选项2,则将</something>的任何实例更改为<\/something>

    在JavaScript字符串中,这两个结构是相同的。

    在HTML脚本元素中,</something>将终止脚本元素。由于浏览器往往不能正确实现HTML 4,因此通常只有</script>才能在实践中执行此操作,但为了符合标准(并且能够将Validator用作标准符合性),您仍应对所有元素执行此操作有用的工具)。

    有些人会建议您将"</script>更改为"<" + "/script>"。不要这样做。它更难以阅读,更难以打字,并且(在微优化领域)下载更多字节并且执行效率更低(JS中的字符串连接相对较慢)。

    在您编写XHTML时,您可以处理CDATA and Appendix C的精彩世界。