2012-08-03 72 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页面的服务器端脚本,然后将您的界面添加为叠加层。

没有一个是漂亮的。责怪钓鱼者,刮板和垃圾邮件发送者。