2012-08-03 49 views
1

我真正需要的是像Firebug中的懸停元素這樣的功能,我們可以從中獲取選定的HTML。與iframe交互 - 獲取選定的HTML

在我們的程序中,我們將加載一個URL,並且該URL將在iFrame中打開。在這裏,我們想要懸停這些元素,並且當用戶點擊某個元素時,我們需要該特定元素的HTML源代碼。

所以:

  • 你能互動(獲取懸停HTML)與內嵌框架,所以你得到的選擇HTML?
+0

如果內容加載是跨域的,你不能與iFrame交互。 – ninja 2012-08-03 11:36:37

回答

2

這是你想要的東西。它將運行在一個名爲sourcecode的div中。

但是,如果需要,您可以將源代碼div放入iframe中。

<div class="sourceCode"> 
</div> 
<script type="text/javascript"> 
    (function ($) { 
     $.fn.outerHTML = function() { 
      return $(this).clone().wrap('<div></div>').parent().html(); 
     } 
    })(jQuery); 

    $(document).ready(function() { 
     $("p,div").click(function() { 

      var thisobject = this; 
      var sourcecodes = $(thisobject).outerHTML(); 
      sourcecodes = htmlEscape(sourcecodes); 
      $(".sourceCode").html(sourcecodes); 

     }); 

    }); 

    function htmlEscape(str) { 
     return String(str) 
     .replace(/&/g, '&amp;') 
     .replace(/"/g, '&quot;') 
     .replace(/'/g, '&#39;') 
     .replace(/</g, '&lt;') 
     .replace(/>/g, '&gt;'); 
    } 
</script> 
+0

確保你有jQuery,因爲這段代碼不會在沒有jQuery的情況下運行。 目前我已經包括p和div。您可以包含整個文檔。 – Rajesh 2012-08-03 11:54:26

+0

我檢查了文檔,當你把$(document).click(函數 ,但它會工作,當你點擊一個特定的div或ap時,源代碼將顯示在稱爲源代碼的div。 Upvote如果這可以解決您的問題 – Rajesh 2012-08-03 12:02:14

+0

很多很多謝謝! – 2012-08-03 12:27:42

0

Short version:no。

實際上,您可以在iframe中運行的唯一腳本是加載在iframe中的頁面中的那些腳本。

如果你想做這樣的事情,有一種方法,但它並不漂亮。 您可以使用ajax請求來解析iframe中的頁面,然後將其加載到頁面中。 或者,您可以編寫一個重新創建整個iframe頁面的服務器端腳本,然後將您的界面添加爲疊加層。

沒有一個是漂亮的。責怪釣魚者,刮板和垃圾郵件發送者。