2011-12-01 60 views
0

的DOM我们允许用户将他们的网页上HTML喷吹到使用脚本标记

<script language="javascript" src="oursite/script.php"></script> 

标签则应该从嵌入我们的网站上的某些内容到他们的网站。目前script.php包含document.write(“从数据库加载的一些内容”),但是有一些限制。

无论如何,我可以用jQuery实现同样的事情吗?我如何告诉jQuery将某段HTML代码完全放在脚本标签所在的位置? document.write()可以做到这一点,但我不知道如何使用jQuery来做到这一点。 (我们已经通过script.php提供了jquery js代码给客户端

+0

jQuery是一个JavaScript动力工具,可以在适当的时候使用。你希望通过发现“我可以用jQuery实现同样的事情”获得什么? –

+0

http://stackoverflow.com/questions/761148/jquery-document-ready-and-document-write可能的重复 – Pateman

回答

2

你不需要jQuery去做document.write()只要它是内联执行的(即不在事件处理程序中,例如$(document).ready() ),它会工作只要确保你逃避结束脚本标签(是这样的:<\/script>),使HTML解析器不会误以为实际结束脚本标签:

<script type="text/javascript"> 
    document.write("<script language=\"javascript\" " + 
     "src=\"oursite/script.php\"><\/script>"); 
</script> 

或者,你可以使用DOM操作添加脚本如果您想在页面加载后添加脚本,这是您唯一的选择,要将它放置在调用它的脚本标记之后,请给脚本标记一个id并使用$("#myScript").after("<script>")

<script type="text/javascript" id="myScript"> 
    $(function() { 
     $("#myScript").after("<script>").attr({ 
      language: "javascript", 
      src: "oursite/script.php" 
     }); 
    }); 
</script> 
0

你不一定需要使用jQuery,但你可以。

这里的基本问题是在页面加载时查找脚本节点。

您可以给它一个id,并希望其他用户的页面上没有重复的ID。

但是,如果你知道脚本将被评估为加载页面时,你也可以这样做:

(function(){ // this is just so you don't run into name collisions with the user's page 
// Get all script elements 
var scripts = document.getElementsByTagName('script'); 
// we know the last script element will be *this* one 
var script = scripts[scripts.length-1]; 
var newp = document.createElement('p'); 
newp.textContent = 'inserted paragraph'; 
// now insert our new nodes after the current script 
script.parentNode.insertBefore(newp, script.nextSibling); 
})(); 

你当然可以用var $script = $('script:last');使用jQuery为好,但如果你不需要它用于其他任何你可以通过不使用它来节省一些加载时间。