从输出中删除<script>标记

Bur*_*urt 4 javascript jquery

我正在构建一个tumblr主题并且有一个ajax调用,它可以获得一个视频播放器,视频播放器代码被返回,我将它登录到控制台(参见#1).我将返回的html写出一个元素(#2),然后写出该元素的内容(#3),并解析出标签.

任何人都可以帮助我理解为什么脚本标签被剥离以及我将如何让脚本运行吗?

console.log(data.posts[0]["video-player"]); //#1    
$("#DOMWindow .post-inner .video-container").html(data.posts[0]["video-player"]); //#2

$("#DOMWindow .post-inner .video-container").html(); //#3
Run Code Online (Sandbox Code Playgroud)

以下是控制台中data.posts [0] ["video-player"]的输出

<span id="video_player_21019988413">[<a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">Flash 10</a> is required to watch video.]</span><script type="text/javascript">renderVideo("video_player_21019988413",'http://penguinenglishlibrary.tumblr.com/video_file/21019988413/tumblr_m2f2kbQFzu1rsq78z',400,225,'poster=http%3A%2F%2Fmedia.tumblr.com%2Ftumblr_m2f2kbQFzu1rsq78z_r1_frame1.jpg,http%3A%2F%2Fmedia.tumblr.com%2Ftumblr_m2f2kbQFzu1rsq78z_r1_frame2.jpg,http%3A%2F%2Fmedia.tumblr.com%2Ftumblr_m2f2kbQFzu1rsq78z_r1_frame3.jpg,http%3A%2F%2Fmedia.tumblr.com%2Ftumblr_m2f2kbQFzu1rsq78z_r1_frame4.jpg,http%3A%2F%2Fmedia.tumblr.com%2Ftumblr_m2f2kbQFzu1rsq78z_r1_frame5.jpg')</script>
Run Code Online (Sandbox Code Playgroud)

下面是.html()调用的输出,其元素被剥离#3

 <span id="video_player_21019988413">[<a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">Flash 10</a> is required to watch video.]</span>"
Run Code Online (Sandbox Code Playgroud)

下面是应该将脚本标记插入页面的完整ajax调用,但不是:

$.ajax({
    url: 'http://penguinenglishlibrary.tumblr.com/api/read/json?id=' + audioID,
    dataType: 'jsonp',
    timeout: 50000,
    success: function(data){
        var videoPlayer = data.posts[0]["video-player"];
        $("#DOMWindow").find(".post-inner .video-container").html(videoPlayer);

    }
});
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 5

jQuery .load()函数总是删除<script>标记,最重要的是当你使用"context"变体时它不会执行它们.

那是,

 $('#foo').load('http://what.ever.com/stuff .something', function() { /* ... */ });
Run Code Online (Sandbox Code Playgroud)

URL后面的".something"后缀触发了这个奇怪的"功能".

记录了一个关于此的错误,解决方案是文档更新.由于各种内部原因,要让它更好地工作是非常困难的.

编辑 - 除了让您的服务器完成分离您需要的页面片段的工作之外,实际上没有直接的解决方法.jQuery只是不合作,大多数情况下(我认为)因为库必须以某种方式弄清楚需要运行检索页面中其他地方的脚本.