提问者:小点点

jquery首次尝试时无法访问iframe


所以我有一个页面,将列出任何电子邮件(纯html)从一个名为'enews'的文件夹当用户点击列表,html页面将显示在一个iframe(仍然在同一页面)

<ul><li><a class="iframesrc" href="/enews/today.html" target="viewcontent">Today</a></li>
    <li><a class="iframesrc" href="/enews/yesterday.html" target="viewcontent">Yesterday</a></li>
</ul>
<iframe id="viewcontent" name="viewcontent"></iframe>

enews html页面不是我做的,所以我不能完全控制页面会是什么样子。所有的文件仍然在同一个域中。

因此,我可以毫无问题地在iframe中显示html页面。我老板唯一想做的就是在新的选项卡/窗口上打开html页面中的每个超链接。

当然,我可以只在enewsletter html页面中添加“target=_blank”,但这是不可行的,因为我们有100多个这样的页面,我不能手动操作,加上负责人没有编程技能,所以他实际上只是在更改html的内容。

现在,有什么办法可以做到这一点吗?

我曾尝试使用jquery访问iframe中的内容(要添加),但效果不太好。

<script>
$( document ).ready(function() {    
     $('a.iframesrc').click(function() {
        console.log("clicked enewslink");
        var link = $(this).attr("href");
        console.log(link);
        $("#viewcontent").attr("src",link);         
        $("#viewcontent").ready(function () {
            var content = $( "#viewcontent" ).contents().find("body").html();
            console.log(content);
        });
    });
});
</script>

因此,当加载页面时,我单击“today”,控制台会检索链接href,但iframe的“内容”为空,加上iframe会显示正确的内容。当我单击“昨天”时,控制台可以检索链接href,但这次iframe的“内容”被打印出来(在控制台中),iframe也显示正确的内容。

为什么浏览器不能在第一次单击时捕获链接?

谢谢,非常感谢您的帮助。


共1个答案

匿名用户

我对您的原始代码做了以下更改:

  • iframe的id更改为viewcontent

现在它似乎正在发挥作用。

以下是修改后的(部分)代码:

IFrame:

<iframe id="viewcontent" name="myiframe"></iframe>

脚本:

<script>
$( document ).ready(function() {    
     $('a.iframesrc').click(function() {
        console.log("clicked enewslink");
        var link = $(this).attr("href");
        console.log(link);
        $("#viewcontent").attr("src",link);         
    });
    $("#viewcontent").load(function () {
        var content = $( "#viewcontent" ).contents().find("body").html();
        console.log(content);
    });
});
</script>