JavaScript embedding [removed] tags in [removed] not working

后端 未结 3 901
盖世英雄少女心
盖世英雄少女心 2021-01-13 04:39

I\'m not sure what is wrong with my code, but when I try and add actorWin.document.write(\'

相关标签:
3条回答
  • 2021-01-13 05:09

    If your embedding javascript in an HTML page the HTML parser when it finds your first script tag will immediately try to find the closing tag. Since your closing script tag is in your document.write you'll find yourself in a pickle.

    You can easily just escape the closing forward slash on the tag with a backslash:

    document.write("<script>alert('foo')</script>') 
    

    To:

    document.write("<script>alert('foo')<\/script>')
    
    0 讨论(0)
  • 2021-01-13 05:29

    Just change closing script tag inside other script tag to fool browser.

    change :

    actorWin.document.write('<script type=\"text/javascript\"><\/script>')
    

    to :

    actorWin.document.write('<script type=\"text/javascript\"><\/scr'+'ipt>')
    

    Edit :

    Full code :

     newWin.document.write(
       "<script type='text/javascript'>" +
            "function PopUpWindowMovie(url) {" +
                 "movieWin=window.open(url,'','height=600,width=800,left=400,top=100,scrollbars,status,resizable');" +
                 "movieWin.focus();}" + 
            "function PopUpWindowActor(){" +
                 "actorWin=window.open('','','height=600,width=800,left=400,top=100,scrollbars,status,resizable');" +
                 "actorWin.focus(); " +
                 "actorWin.document.write('Joaquin Phoenix is a great actor and a long time vegan.<br />');" +
                 "actorWin.document.write('<script type=\"text/javascript\">" +
                 "function test() {" +
                        "alert(\"here\");" +
                 "} <\/scr'+'ipt>');" + // <-- I've edited this line
            "}" +
        "<\/script>"); 
       newWin.document.write("This is a MUST SEE movie: <h1>Earthlings (2005)</h1>");
       newWin.document.write("<a href=\"javascript:PopUpWindowMovie('"+documentary.title+"')\">Go to see the movie info</a><br />");
       newWin.document.write("<a href=\"javascript:PopUpWindowActor()\">Go to see the lead actor</a>");
    
    0 讨论(0)
  • 2021-01-13 05:31

    but when I try and add actorWin.document.write('</script>') everything gets screwed up

    Not sure what's the problem but it may help you

    Writing to a document that has already loaded without calling document.open() will automatically perform a document.open call.

    About document.open call

    If a document exists in the target, this method clears it.

    Read more on MDN.

    Well, whatever your problem is, you may use this approach

    var newWin = window.open('','Win','width=300,height=200,top=100,left=600');
    
    // Then add scripts
    var script1 = document.createElement('script');
    script1.innerHTML = "function someFunc(){  alert('Hello'); }";
    newWin.document.getElementsByTagName('head')[0].appendChild(script1);
    
    var script2 = document.createElement('script');
    script2.src = "http://code.jquery.com/jquery-git2.js";
    newWin.document.getElementsByTagName('head')[0].appendChild(script2);
    

    This should work. An Example here.

    0 讨论(0)
提交回复
热议问题