我们允许用户放置
<script language="javascript" src="oursite/script.php"></script>
标记在他们的页面上,然后应该将我们网站上的一些内容嵌入到他们的网站中。目前script.php包含document.write(“从数据库加载的一些内容”),但是有一些限制。
无论如何我可以使用jQuery实现相同的功能吗?我如何告诉jQuery将一段HTML代码完全放在脚本标签的哪个位置? document.write()可以做到这一点,但我不知道如何使用jquery做到这一点。 (我们已经通过script.php向客户端提供了jquery js代码。
答案 0 :(得分: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>
答案 1 :(得分: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);
})();
你当然可以使用jQuery和var $script = $('script:last');
,但如果你不需要它,你可以通过不使用它来节省一些加载时间。