使框架折叠/展开或用类似的东西替换框架

时间:2016-10-23 22:01:00

标签: javascript html

我正在处理使用框架集和框架的旧网页(在html和java脚本中),公司并不想重做所有内容。主页面有两个框架,treeFrame有菜单(它有一个大菜单,顶部有(1)弹出菜单,文件浏览器中的每个选定产品都有(2)菜单)和另一个框架docFrame显示所选产品文档或自定义文档未找到页面。

当用户点击treeFrame中的某个文档图标时,使用此

在文档框架中显示pdf
<a href="../pdf/example.pdf" target="docFrame"></a>

我想让treeFrame折叠并展开点击一些新按钮(我可以随意放置在任何框架中),这样用户可以更好地查看文档框架。我需要它来支持上述功能。目标设备是启用触摸的监视器。此外,目标设备也将在本地拥有文件,因此它应该在没有互联网的情况下独立工作,因此我无法添加jQuery(我猜)。服务器是Windows Server 2003。

在线查看后,我发现无法在帧之间进行通信。如果是这样,我有什么选择来替换帧并仍然可以做上面的事情?如果不是,我如何通过按下按钮来最小化帧大小。

到目前为止,我试过这个,(没有用)

我在treeFrame中添加了此部分

<button type = "button" onclick="send()";>Collapse</button>
<script>
    var port;
    onmessage = function(e) 
    {
        port = e.ports[0];
    }

    function send()
    {
        port.postMessage("clicked");
    }
</script>

这部分在主html文件中

<frameset cols="520,*">
    <frame src="tree.html" name="treeFrame" target="_self">
    <frame src="documents.htm" name="docFrame " target="right">
</frameset>
<script>
    var channel = new MessageChannel();
    var treeframe = $(".treeframe")[0].contentWindow;
    var origCols = null;

    treeframe.onload = function() 
    {
        this.postMessage("","*", [channel.port2])
    };

    channel.port1.onmessage = function(e) 
    {
        if (e.data === "clicked") 
        {
            if(origCols!=null)
                showFrame()
            else
                hideFrame();
        }
    }

    function hideFrame() {
        var frameset = document.getElementById("frameSet");
        origCols = frameset.cols;
        frameset.cols = "0, *";
    }

    function showFrame() 
    {
        document.getElementById("frameSet").cols = origCols;
        origCols = null;
    }
</script>

0 个答案:

没有答案