javascript document.write脚本

时间:2013-11-20 07:29:11

标签: javascript document.write

编辑qestion

我正在尝试创建两个单独的HTML文档: main.html sufler.html 。想法是从 main.html 控制 sufler.html 页面。为此,我找到了解决方案 在main.html页面上编写类似字符串元素的sufler's.html代码,在该字符串元素中更改我需要的内容,并使用 main.html 中的document.write函数进行编写。一切 除了<script>函数...

以外工作正常

main.html中

<script type="text/javascript">
var HTMLstringPage1     = '<!DOCTYPE html><html><head><link href="stilius.css" rel="stylesheet" type="text/css" />',
    HTMLstringPage2     = '</body></html>',
    HTMLstringStyle     = '\x3Cscript type="text/javascript">function styluss(){document.getElementById("flip").style.font="normal normal 30px sans-serif";}\x3C/script>',
    HTMLstringDiv1      = '</head><body onload="styluss()"><div id="sufler"><div id="mov"><p id="flip">',
    HTMLstringDiv2      = '</p></div></div>';

var newWindow           = window.open('sufler.html','_blank','toolbar=no, scrollbars=no, resizable=no, height=615,width=815');

    newWindow.document.body.innerHTML = '';
    newWindow.document.write(HTMLstringPage1,HTMLstringDiv1+"Text"+HTMLstringDiv2,HTMLstringPage2); //works fine
//  newWindow.document.write(HTMLstringPage1,HTMLstringStyle,HTMLstringDiv1+"Text"+HTMLstringDiv2,HTMLstringPage2);//works except script function
</script>

有人可以为此提供帮助吗?

2 个答案:

答案 0 :(得分:0)

您必须使用<script>标记的常规左括号:

var HTMLstringStyle = '<script type="text/javascript">function styluss(){document.getElementById("flip").style.font="normal normal 30px sans-serif";}<\/script>';

虽然我不明白为什么你会使用这个...将<script>标签附加到<head><body>几乎总是一个优秀的解决方案。

答案 1 :(得分:0)

要动态添加脚本标记,最好这样做:

var newDoc = newWindow.document;
var script = newDoc.createElement("script");
script.type = "text/javascript";
var text = newDoc.createTextNode('function styluss(){document.getElementById("flip").style.font="normal normal 30px sans-serif";}');
script.appendChild(text);
newDoc.getElementsByTagName("head")[0].appendChild(script);

工作演示:http://jsfiddle.net/jfriend00/JqW5F/


但是,几乎不需要像这样动态创建代码。因为根据定义,您通常必须知道您希望代码执行什么操作,所以您可以使用预先创建的函数来获取一些参数,然后使用正确的参数调用现有函数来完成您想要的而不是创建动态定制功能:

function styleIt(id, fontStyle) {
    document.getElementById(id).style.font = fontStyle;
}

styleIt("flip", "normal normal 30px sans-serif");
styleIt("flip2", "normal normal 12px sans-serif");