代码之家  ›  专栏  ›  技术社区  ›  Joshua

Javascript重定向到动态创建的HTML

  •  1
  • Joshua  · 技术社区  · 14 年前

    我有一个动态创建HTML页面的javascript例程,它有自己的头和脚本标记。

    如果我获取字符串的内容并将其保存到文件中,然后在浏览器中查看该文件,则一切正常,但如果我尝试document.write(newHTML),则其行为将不同。动态newHTML的头中的javascript非常复杂,我不能在这里包含它。。。但是请相信我,如果我把它保存到一个文件中,它会很好地工作,但如果我试图用document.write替换当前页面,它就不会工作。有什么可能的陷阱会导致我没有考虑的?我可能需要先删除现有页眉中的现有脚本标签吗?我需要手动重新调用onLoad吗??

    同样,当字符串保存到例如'sample.html'并浏览到时,它工作得很好,但是如果我设置var Samp=“[REAL html HERE]”;然后说document.write(Samp);document.close(),javascript例程将无法正确执行。

    关于我可能遗漏的东西有什么线索吗?

    除了document.write,还有其他更好的动态替换页面内容的方法吗?

    我可以不知何故重定向到新页面,尽管磁盘上或服务器上不存在,但只存在于内存中的字符串中?我不想把整个文件上传到我的服务器上,只需要重新下载就可以查看它。

    如何使用javascript动态地将当前页面的当前内容替换为全新内容(包括复杂的客户端javascripting),并始终获得与将字符串作为html文件保存到服务器并重定向到服务器时完全相同的结果?

    如何将“重定向”只存在作为客户端字符串的HTML文件中?

    3 回复  |  直到 14 年前
        1
  •  0
  •   jira    14 年前

    你可以这样做:

    var win=window.open("") //open new window and write to it
    
    var html = generate_html();
    
    win.document.write(html)
    win.document.close();
    
        2
  •  0
  •   Napas    14 年前

    也许 吧 eval() 函数在这里有用吗?在没有看到代码的情况下给Answer是很难的。

        3
  •  0
  •   zjorzzzey    14 年前

    从来没试过,但我认为这应该是可能的。关于是什么让它起作用的一些想法:

    • 确保包含js的文档以正确的头/mimetype/doctype发送
    • 以有效的方式提供javascript,例如发送包含脚本标记的w3c有效页。

    也许这样就行了。如果没有,请在编写新的html之前尝试删除当前的html。

    另外,看看其他人是如何完成这项任务的,可能会有帮助。如果我没记错的话,google页面本质上也是一个带有js的短html页面。