2012-01-27 145 views
0

我有一些運行在頁面上的jQuery。作爲一個短期修復,我想刪除標籤內的代碼(包含JS),這是在頁面上,這樣jQuery不會運行。撤消jQuery或恢復DOM?

有什麼辦法,我可以做到這一點,或停止運行的代碼?我想恢復到典型的DOM狀態,而不是被操縱的一個...

編輯:

我有一個運行一些JavaScript網頁上的腳本標籤。

由於某些限制,我不能簡單地刪除此 - 我必須包括一個JavaScript文件來刪除這個腳本標籤/或防止這個JavaScript運行。

我想恢復到應該如何看的頁面,而不由腳本標記已經在頁面上已經被操縱。

+0

您是否嘗試禁用JavaScript? – bnieland 2012-01-27 10:44:21

+1

目前還不清楚你試圖實現什麼,你想停止javascript的優秀,刪除DOM元素,或撤消DOM更改。 – 2012-01-27 10:44:58

+0

**「短期修復」**是什麼? – gdoron 2012-01-27 10:48:48

回答

1

如果只能包含JavaScript文件,你可以嘗試重新聲明jQuery對象,因此它不能運行:

jQuery = null; 
$ = null; 

這會殺了jQuery的提供它後裝。但是,這可能會導致很多javascript錯誤。在這個思路上,你可以插入一些破損的JS,如果它是之前的 jQuery的東西,它會阻止jQuery執行。

+0

謝謝,這將是一個很好的解決方案,但不幸的是我在其他地方使用jQ很多。我想也許$(「script:eq(5)」)。remove();但似乎沒有工作:( – Tim 2012-01-27 12:02:37

+0

我可以通過使用JS來定義這個AFTER,所以在初始jQuery運行後寫入頁面嗎? – Tim 2012-01-27 12:12:16

+0

是的,試試吧!只要你取消了變量,它就會終止jQuery的。 – Dunhamzzz 2012-01-27 13:12:31

0

只需將您的代碼進行了jQuery(document).ready函數,應該使HTML留它的方式。

在編輯閱讀你的補充後,我認爲唯一的加載該腳本將增加使用螢火蟲腳本控制檯在那個特定的腳本一個突破點之前看到的網頁。

編輯:添加更多的答案閱讀OP的編輯之後。

+1

忘了提及 - 將它放在另一個函數中。 (將代碼從dom就緒函數中移出仍然可以運行腳本)。 – 2012-01-27 10:44:59

0

我不能想到它需要的場景。
事實上,操縱後恢復DOM是不可能的。 reset按鈕不會撤消DOM

+0

也許我誤解了你在說什麼,但不是不可能恢復dom變化只是'棘手',[這裏](這是我本週以來一直在嘗試的東西) – 2012-01-27 10:52:38

+0

@TomIngram。我看不到任何「重置」按鈕。只有歷史堆棧。一個實現'command'設計模式的代碼(帶有bug ...) – gdoron 2012-01-27 10:54:57

+0

這實際上只是一個測試原理的草圖,顯然是在進行中,如果你想完全重置dom,爲什麼不只是刷新'window .location.reload(true);' – 2012-01-27 11:08:59

0

如果在一個方法,你可以只使用return false;你的代碼運行之前,你也可以只註釋掉的代碼,或者從未運行的方法包裝代碼:

$("p").hide(); 

變爲:

function() { 
    $("p").hide(); 
} 

還是我誤解你的問題?

0

我可以想到你在不操縱源代碼或dom的情況下實現這一點的唯一方法是在代碼執行之前測試cookie,如果它不存在,那麼設置它並繼續執行代碼的其餘部分this。當你想恢復在DOM所做的更改回到「原始」只是刷新窗口和cookie的存在會阻止執行第二次

(function() { 
    if($.cookie('foo') == null) { 
     $.cookie('foo', 'bar'); 
     $('#alert').click(function() { 
      alert('run'); 
     }); 
    } 
})(); 

我可以在此看到的唯一的缺陷是,如果一個用戶拒絕cookie在這種情況下,如果它真的很重要我會提醒用戶,並再次突破執行