Chrome में एक इनलाइन जावास्क्रिप्ट रीडायरेक्ट से पहले जावास्क्रिप्ट तोड़ें


91

मैं एक पृष्ठ देख रहा हूं जिसमें इनलाइन जावास्क्रिप्ट रीडायरेक्ट ( window.location = "/anotherpage") है। मैं क्रोम में पेज लोड करना चाहता हूं, लेकिन रीडायरेक्ट लाइन को अक्षम कर दिया गया है, इसलिए मैं पेज को बिना रीडायरेक्ट किए हटा सकता हूं।

यहाँ मैंने कोशिश की है:

  • डेवलपर टूल -> कॉग -> जनरल -> जावास्क्रिप्ट अक्षम करें। पेज लोड करें। यह पुनर्निर्देशित नहीं करता है (याय!)। लेकिन मैं अभी भी पेज की बाकी जावास्क्रिप्ट को चलाना चाहता हूं, और यह नहीं है।

  • URL टाइप करें, फिर डेवलपर टूल पर क्लिक करें -> स्रोत -> पॉज़ (F8) वास्तविक तेज़! इसे अभी तक पुनर्निर्देशित नहीं किया गया है (याय!) अब मैं अप्रत्यक्ष करने से पहले पुनर्निर्देशित लाइन को निष्क्रिय करना चाहता हूं, लेकिन वह भाग अभी तक डेवलपर टूल में लोड नहीं हुआ है। तो मैं अन्य फ़ाइलों जावास्क्रिप्ट कोड के माध्यम से कदम रखना शुरू कर दूंगा जब तक कि मैं वहां नहीं पहुंचता ?? लेकिन जैसे ही मैं दूसरी फ़ाइलों के जावास्क्रिप्ट से बाहर निकलता हूं, यह तुरंत (doh!) को रीडायरेक्ट कर देता है।

क्या यह किया जा सकता है? मुझे लगा कि जावास्क्रिप्ट की एक पंक्ति को अक्षम करना आसान होना चाहिए, लेकिन मैं स्टम्प्ड हूं।

जवाबों:


142

डेवलपर टूल -> स्रोत -> ईवेंट श्रोता ब्रेकपॉइंट (दाईं साइडबार पर) -> लोड -> चेक अनलोड

यह अनलोड घटना पर डिबगर ब्रेक करेगा जो नेविगेशन से पहले भेजा जाता है।


2
काम के जवाब के लिए एक और धन्यवाद। मुझे यह सुनने में दिलचस्पी होगी कि "यह काम नहीं करता है" संदेश पर इतने सारे upvotes क्यों हैं; क्या यह पुराने Chrome संस्करणों के साथ एक समस्या थी? क्या कोई ऐसा व्यक्ति जिसके लिए काम नहीं किया गया, वह अधिक जानकारी प्रदान कर सकता है?
ईसाई रोंदेउ

8
मैं इस प्रतिक्रिया को देखकर शुरू में बहुत खुश था, लेकिन मैं यह पुष्टि कर सकता हूं कि यह मेरे लिए काम नहीं करता है (भले ही मैंने सुझाव के अनुसार अनलोड किया हो, पेज अभी भी पुनर्निर्देशित होता है और मेरे पास पेज के स्रोतों में ब्रेकपॉइंट्स सेट करने का कोई मौका नहीं है ए)। शायद यह उस तरह से करना होगा जो पहले पृष्ठ "पुनर्निर्देशन" करता है? मेरे मामले में पेज ए (वह पेज जिसकी जावास्क्रिप्ट मैं डीबग करने की कोशिश कर रहा है) पेज बी के लिए एक पोस्ट (जावास्क्रिप्ट के माध्यम से) करता है
एमिल जी

17
यह ठीक से काम करता है, समस्या यह है कि कॉल स्टैक खाली है, इसलिए यह वास्तव में सहायक नहीं है, क्योंकि आप यह नहीं देख पाएंगे कि वास्तव में पुनर्निर्देशित क्या हुआ है
यूजीन कुजमेनको

8
@EugeneKuzmenko गंभीरता से, मुझे नहीं पता कि यह वास्तव में किसी की मदद कैसे कर रहा है
को पी।

1
यह केवल तभी काम करता है जब पृष्ठ में कोई अनलोड या पहले से लोड हैंडलर होता है जिस पर डिबगर बंद हो सकता है। यदि ऐसा कोई हैंडलर पंजीकृत नहीं है, तो डिबगर ट्रिगर नहीं होगा।
13

42

निम्न कार्य करें

  1. डेवलपर टूल खोलें
  2. स्रोत टैब पर जाएं
  3. के लिए देखो घटना श्रोता ब्रेकप्वाइंट
  4. लोड विकल्प का विस्तार करें
  5. यहां अनलोड ऑप्शन को चेक करें

क्रोम अनलोड ब्रेकप्वाइंट


@TomBrito जब पहले से लोड ब्रेक पर (जिसे मुझे कुछ मूर्खतापूर्ण अखबार paywall को चकमा देने के लिए उपयोग करना था), मैं तत्वों का निरीक्षण कर सकता हूं। क्या आप अनलोड होने पर निरीक्षण नहीं कर सकते हैं? मैं Chrome 71.0.3578.98 पर हूं।
लिंकड

12

मेरे पास एक तीसरी पार्टी जेएस लाइब्रेरी है, जिसमें पृष्ठ को फिर से लोड करने की गलत स्थिति है। और इस वजह से पेज को लगातार रीलोड किया गया है। मैंने यह खोजने की कोशिश की कि गलत कोड कहां है।

मैंने "ईवेंट श्रोता ब्रेकपॉइंट्स" विधि का उपयोग करने की कोशिश की, लेकिन एक टिप्पणी के रूप में कहा कि आपके पास अनलोड घटनाओं में स्टैक ट्रेस नहीं है, इसलिए यह बहुत बेकार है।

समाधान जो मेरे लिए काम किया है: मैं सैंडबॉक्स विशेषता, जैसे के साथ iframe टैग के साथ एक पेज बनाया <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>और उस में मेरी साइट डाल दिया। इस तरह से क्रोम के अंदर सुरक्षा त्रुटियां होंगी और कंसोल दिखाता है कि जेएस लोकेशन ऑब्जेक्ट को एक्सेस करने की कोशिश करता है। आप उस पर क्लिक करें और कोड देख सकते हैं। सबसे अच्छा है क्रोम में एक जेएस डीकंप्रेसर (स्रोत विंडो के नीचे बाईं ओर {} बटन) है, जो चालाक है, सुंदर छपाई के बाद भी लाइन दिखा सकता है, इसलिए आप इसे संकुचित जेएस में भी देख सकते हैं।

सैंडबॉक्स संपत्ति के बारे में अधिक जानकारी: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox


यह केवल तभी काम करता है जब कोड (उस iframe में) का उपयोग top.location = "..."नहीं करता हैlocation = "..."
mems
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.