Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery可以';首次尝试时无法访问iframe_Javascript_Jquery_Html_Iframe - Fatal编程技术网

Javascript jquery可以';首次尝试时无法访问iframe

Javascript jquery可以';首次尝试时无法访问iframe,javascript,jquery,html,iframe,Javascript,Jquery,Html,Iframe,因此,我有一个页面,可以从名为“enews”的文件夹中列出任何enewsletter(纯html) 当用户单击列表时,html页面将显示在iframe中(仍在同一页面中) enews html页面不是由我创建的,因此我无法完全控制页面的显示方式。所有的文件仍然在同一个域中 因此,我可以毫无问题地在iframe中显示html页面。我老板唯一想做的就是在新的选项卡/窗口上打开html页面中的每个超链接 当然,我可以只在enewsletter html页面中添加“target=_blank”,

因此,我有一个页面,可以从名为“enews”的文件夹中列出任何enewsletter(纯html) 当用户单击列表时,html页面将显示在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>

$(文档).ready(函数(){
$('a.iframesrc')。单击(函数(){
log(“单击了enewslink”);
var link=$(this.attr(“href”);
控制台日志(链接);
$(“查看内容”).attr(“src”,链接);
$(“#视图内容”).ready(函数(){
var content=$(“#viewcontent”).contents().find(“body”).html();
控制台日志(内容);
});
});
});
因此,当加载页面时,我单击“today”,控制台会检索链接href,但iframe的“内容”为空,加上iframe会显示正确的内容。 当我单击“昨天”时,控制台可以检索链接href,但这次iframe的“内容”被打印出来(在控制台中),iframe也显示正确的内容

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

谢谢,非常感谢您的帮助

编辑: 第一次单击时:

第二次单击时:
blablabla-enews的内容“>

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

  • iframe
    id
    更改为
    viewcontent
  • $(“#viewcontent”).ready(…)
    更改为
    $(“#viewcontent”).load(…)
  • 移动
    $(“#viewcontent”)。在
    $('a.iframesrc')外部加载(…)
    。单击(…)
    (这样在第一次单击链接时它就已经绑定了)
现在它似乎正在发挥作用

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

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>

脚本:

<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>

$(文档).ready(函数(){
$('a.iframesrc')。单击(函数(){
log(“单击了enewslink”);
var link=$(this.attr(“href”);
控制台日志(链接);
$(“查看内容”).attr(“src”,链接);
});
$(“#视图内容”).load(函数(){
var content=$(“#viewcontent”).contents().find(“body”).html();
控制台日志(内容);
});
});

只有当前文档有一个
ready
处理程序,您的iFrame元素没有一个ready处理程序。@adeneo您好,我删除了那个部分,没有任何区别。谢谢。对不起,我已经编辑了我的代码。实际上iFrame和javascript的ID是正确的,我只是在这篇文章中键入了错误。谢谢