2011-11-01 26 views
89

Tôi muốn thay đổi ngữ cảnh của javascript được thực hiện trong công cụ phát triển webkit/bảng điều khiển firebug để thực thi mã của nó giống như đang chạy từ bên trong iframe trên trang.Có cách nào để thay đổi ngữ cảnh thành khung nội tuyến trong bảng điều khiển javascript không?

Tôi biết tôi có thể làm điều này bằng cách mở trang trong khung nội tuyến trên một trang riêng biệt, nhưng tôi muốn chạy mã nơi tương tác với khung chính.

+1

bạn luôn có thể thực thi mã trong kiểu 'window.frames [x]'. Chỉ cần nối thêm bất cứ lệnh nào bạn muốn. I E. 'window.frames [0] .runFunction()' – Ktash

+1

@Ktash, bạn có muốn tạo ra câu trả lời không? – Muhd

+0

Làm thế nào tôi có thể làm tương tự trong IE?Tôi thấy rất khó chọn một phần tử trong cửa sổ bảng điều khiển bằng cách sử dụng $ nếu phần tử nằm trong một IFRAME bên trong. Hãy giúp tôi. – tarekahf

Trả lời

123

Chrome 15 cho phép bạn thay đổi phạm vi của bảng điều khiển. Trên dưới cùng của giao diện điều khiển, bên cạnh nút điều khiển rõ ràng, có một thực đơn mà nói <top frame> mà sẽ cung cấp một danh sách các khung hình có sẵn:

enter image description here

Firefox có similar feature hiện trong phát triển:

enter image description here


Bạn cũng có thể điều hướng qua khung using the command line:

var frame = document.getElementById("frame1").contentWindow; 
cd(frame); 
+2

Rất đẹp và thậm chí hoạt động xuyên miền. Chỉ là những gì tôi muốn. – Muhd

+5

Tôi có thể thực thi mã trong bảng điều khiển để thực hiện điều tương tự này hay tôi phải bấm vào bộ chọn khung? – bodine

+0

@ bodine - bạn đã tìm ra cách để thực hiện nó từ lệnh giao diện điều khiển chưa? – arty

20

Bạn có thể thực thi mã trong s bằng cách sử dụng chức năng window.frames[x]. Ví dụ:

window.frames[0].runFunction() 
+0

Một lựa chọn tốt đẹp nếu FireBug là vũ khí bạn chọn. Cảm ơn. –

+0

Bạn sẽ thực thi mã bên ngoài các hàm như lệnh jQuery như thế nào? Hoặc nếu bạn muốn nhận được một tham chiếu đến một phần tử DOM dưới một số khung thì thực thi mã với phần tử đó? – David

4

Đối với giải pháp firebug, hãy xem this answer trên một câu hỏi SO khác. Tuy nhiên, không hoạt động như một tên miền chéo như giải pháp Chrome của Dennis.

Chỉnh sửa: Với phiên bản mới hơn của firebug, họ có thể đã khắc phục sự cố tên miền chéo cố định.

3

Thực hiện các câu lệnh và lệnh theo mặc định được thực hiện trong ngữ cảnh của cửa sổ cấp cao nhất. Nếu bạn đang sử dụng khung, hãy sử dụng lệnh "cd()" console.

cd() Gọi cd() mà không có tham số trả về cửa sổ cấp cao nhất.

cd (cửa sổ) Cho phép bạn thay đổi đánh giá biểu thức dòng lệnh từ cửa sổ cấp cao nhất mặc định của trang web sang cửa sổ khung.

Thông tin thêm, here

+1

dường như chỉ liên quan đến IE, nhưng không liên quan đến webkit .. – Cherniv

+0

Đó chính xác là những gì tôi đang tìm kiếm. (hoạt động trong Firefox) Cảm ơn. – user2410595

3
cd(document.getElementsByTagName('iframe')[0]); 
+1

Chào mừng bạn đến với Stack Overflow! Vui lòng xem xét chỉnh sửa bài đăng của bạn để thêm giải thích thêm về mã của bạn và tại sao nó sẽ giải quyết vấn đề. Một câu trả lời mà hầu hết chỉ chứa mã (ngay cả khi nó hoạt động) thường không giúp OP hiểu được vấn đề của họ. – SuperBiasedMan

+0

Cảm ơn! Đây là một cách kỳ lạ cho firefox để làm điều đó, nhưng tôi đoán "cd (iframe)" là những gì bạn nhập vào giao diện điều khiển để chuyển đổi ngữ cảnh. Tôi đã cho bạn một +1 b/c bạn đã tiết kiệm cho tôi tấn đầu đập, nhưng bạn thực sự nên đánh bóng bài đăng này và giải thích nó! –

5

Trong Chrome hiện nay (phiên bản 52), tất cả các bạn phải làm là chọn khung nội tuyến trong các yếu tố "" tab trong những công cụ dev. Mọi thứ bạn chạy trong bảng điều khiển JS sẽ tự động chạy trong ngữ cảnh của khung nội tuyến đã chọn.

Ví dụ, ở đây tôi đã chọn một khung nội tuyến, và khi tôi gõ document.location.pathname vào giao diện điều khiển nó sẽ trả về thuộc tính src của iframe, thay vì URL từ thanh địa chỉ:

enter image description here

Các vấn đề liên quan