0

我正在通过对象标签添加一个 html 文件。围绕对象标签的 div 被隐藏(显示:无)。

我遇到的问题是我在 html 对象的 body 标记上放置了一个 onpageshow 事件,但它在浏览器中的功能不同。

  • 一旦 html 在对象中加载,Firefox 似乎就会播放该功能

  • Webkit (Safari/Chrome) 仅在我取消隐藏 div 时播放它(这是我想要的)

  • Opera / IE10 根本不玩这个功能。

是否有另一种方法可以使函数仅在屏幕上可见时才运行?

这是一个演示。我正在尝试做的事情。

主窗口的代码。

<script type="text/javascript">
    function runthis()
    {
        if ( document.getElementById("wrapper").style.display == "none" )
        {

            document.getElementById("wrapper").style.display = "block"; 
            document.getElementById("hide").innerHTML = 'Div showing';

        }
        else
        {
            document.getElementById("wrapper").style.display = "none";
            document.getElementById("hide").innerHTML = 'Div hidden';
        }           
    }

    function removeObject()
    {
        if( document.getElementById("wrapper").innerHTML == '' )
        {
            document.getElementById("wrapper").innerHTML = '<object id="test_object" name="name" data="frame.html" onshow="callme();"></object>';
            document.getElementById("add").innerHTML = 'Object added';
        }
        else
        {           
            document.getElementById("wrapper").innerHTML = '';
            document.getElementById("add").innerHTML = 'Object removed';
        }
    }
</script>
<body>
    <div id="wrapper" style="display:none"></div>
    <div>
        <button type="button" onclick="runthis();">Show/Hide</button>
        <button type="button" onclick="removeObject();">Add/Remove</button>
        <div id="status"><span>Status: </span><span id="hide">Div hidden</span> | <span id="add">Object removed</span></div>
    </div>
</body>

包含对象的代码

<script type="text/javascript">
    function callme()
    {
        alert("running");
    }
</script>
</head>

<body onpageshow="callme();">
</body>

所以基本上警报应该只在 div 显示并且对象已经加载时运行。

4

1 回答 1

0

采用不同的路线并使用 postMessage 代替。

于 2012-12-12T04:14:22.343 回答