所以我有一个页面,将列出任何电子邮件(纯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也显示正确的内容。
为什么浏览器不能在第一次单击时捕获链接?
谢谢,非常感谢您的帮助。
我对您的原始代码做了以下更改:
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>