【问题标题】:Why doesn't setting frame src by js show the display source?为什么js设置frame src不显示显示源?
【发布时间】:2011-04-30 07:15:09
【问题描述】:

基于 JS 条件,我希望发生两件事中的任何一件;

  1. 要么在页面上显示一个框架 或
  2. 在页面上显示链接“显示 pdf”。 显示pdf

现在虽然我知道如何根据 JS 条件进行显示/隐藏,但我的问题是 如果满足第二个条件,我不仅要隐藏框架的东西,还要确保它也没有在后台加载...... 我认为使用显示/隐藏不会阻止它在后台加载 pdf .. 所以我的问题是如何使用 Javascript 实现这一点?

**********这是我正在尝试的**********

if(isiPad) 
        {     
        $('#content').attr('src','ipad_frame.html'); 
        } 
        else 
        {     
        $('#content').attr('src','xyz.pdf'); 
        } 

在 html 中,我有

 <frame src="#" title="Content Frame" name="content" id="content" />

这可以正常工作吗?由于某些原因,我只是对其进行了测试,即使它进入 if/else 部分,它也没有显示相关内容..

【问题讨论】:

    标签: javascript css html scripting


    【解决方案1】:

    为什么不将脚本中的元素动态添加到容器元素中?类似于(假设您使用的是 jQuery):

    if(condition)
    {
        $('#container').html('<html for frame>');
    }
    else
    {
        $('#container').html('<html for pdf>');
    }
    

    这将确保只加载您要加载的项目。

    【讨论】:

    • woops.. 和 是当你在深夜直接在回复框中输入代码时发生的 ;)
    • 这么简单的事情导入jQuery合理吗?
    • 简而言之,当然.. 否则,只需使用原生 javascript 元素函数
    • 非常感谢...语法问题完全没有问题..我也可以使用 jQuery..我唯一的问题是当我们说 if..else 时,只能满足一个条件一次..但由于其中一个将具有“pdf”引用(
    • @hmthr:只有将元素添加到 DOM 后才会加载 PDF。所以不,不满足条件就不会加载。
    【解决方案2】:

    您可以使用 DOM 来修改页面内容,而不是显示/隐藏:

    <div id="frameWillBeHere">
    
    </div>
    
    <script language="javascript">
    
    var f = document.getElementById('frameWillBeHere');
    
    if (whatever) {
       f.innerHTML = '<iframe>pdf file</iframe>';
    }
    else {
       f.innerHTML = 'something else';
    }
    
    </script>
    

    您还可以使该脚本响应事件,以便在需要时显示框架。有一些工作要做,以使页面中出现的框架不会完全破坏您的布局。

    【讨论】:

    • 非常感谢..但问题是在设置 f.innerHTML 时,实际内容不会显示...不确定我是否需要在特定事件上调用该函数?
    • 补充一下,IE浏览器有问题,即下面的作品 document.getElementById('content2').contentWindow.location = 'google.com';但是本地 html 调用不起作用,即 .document.getElementById('content2').contentWindow.location = 'ipad_frame.html';
    最近更新 更多