删除样式和脚本标记


removing style and script tag

我使用SWIPE来显示div幻灯片。

SWIPE标准设置:

 <div id='slider' class='swipe'>
  <div class='swipe-wrap'>
   <div></div>
   <div></div>
   <div></div>
 </div>
</div>

但我的代码有一个不幸的添加,导致SWIPE无法工作。。。

 <div id='slider' class='swipe'>
  <div class='swipe-wrap'>
   <script></script>
   <style></style>
   <div></div>
   <div></div>
   <div></div>
 </div>
</div>

脚本和样式标签导致它无法工作。。。。

为什么有一个脚本和样式标签你一定在想。。。

我有一个脚本,张贴数据我的页面

 <script src="js.php?id=22235"></script>

这会输出类似的东西

   <style type="text/css"></style>
   <div id='Gallery'>
   <div class="Details">
   <img src="555.jpg">
   <div class="Price">$5</div>
   </div>
   <div class="Details">
   <img src="111.jpg">
   <div class="Price">$1</div>
   </div>
   </div>

所以在浏览器中打开它之前,我的代码实际上是这样的

 <div id='slider' class='swipe'>
  <div class='swipe-wrap'>
 <script src="js.php?id=22235"></script>
 </div>
</div>

那么现在我尝试了什么。。。好吧,我使用jquery在内容到位后删除标签,但这似乎太晚了。。。和滑动已经吓坏了我

 $('.swipe-wrap style').remove();

啊,除此之外,我开始创建另一个页面来转储内容,然后我打算只在div部分使用一些php解析,我开始认为必须有更好的方法。。。所以我在这里

谢谢,JT

问题是,一旦加载脚本(如果有一些顶级代码),或者在加载后第一次调用脚本时,脚本就会被执行。只有在脚本执行之后,才能删除样式标记。

如果您有权访问脚本,您可以对其进行更改,使其不再添加样式元素。如果你没有访问权限(我假设是这样),你可以按照以下方式操作:

将事件侦听器添加到DOM更改

首先使用jQuery为DOM修改事件添加一个eventlistener。这样的事件将被DOMNodeInserted。您将eventlistener附加到一个肯定存在的元素上。它可能看起来像这样:

$(function() {
    $('.swipe-wrap').on('DOMNodeInserted', 'style', function(event) {
        var target = $(event.currentTarget);
        target.remove();
        $('.swipe-wrap script').remove();
        loadSWIPE();
    });
});

这样,一旦将每个样式元素添加到DOM中,就可以删除它。

确保SWIPE在清理后加载

在移除样式元素时调用的函数中加载SWIPE脚本(如上所述)。在函数中,您可以检查.swipe-wrap元素下面有多少样式元素,只有在没有样式元素的情况下,才会加载SWIPE脚本。

function loadSWIPE() {
    var length = $('#mySwipe style').length;
    if (length == 0) {
        var url = "swipe.js";
        $.getScript(url, function() {
            var elem = document.getElementById('mySwipe');
            window.mySwipe = Swipe(elem, {});
        });
    }
}

编辑

添加了删除PHP脚本的脚本标记。