auto refresh iframe

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

    <script></script>
    <style>
        .gray {color:#ccc !important; background-color:#eee !important; border-color:#eee  !important;  }
        .black { color:black !important;  }
        #autoRefresh_label { cursor:pointer; }
    </style>
</head>
<body>
    <div id="autoRefresh_div"   style="-moz-user-select:none;" onselectstart="javascript:return false;">
        <input type="checkbox" checked="checked" id="autoRefresh_checkbox" />
        <label for="autoRefresh_checkbox" id="autoRefresh_label"><select id="autoRefresh_select">
                        <option value="1">1分钟</option>
                        <option value="3" selected="selected">3分钟</option>
                        <option value="10">10分钟</option>
                        <option value="30">30分钟</option>
                    </select>
            自动更新</label>
    </div>

    <script>
      
        window.$$ = function (e) {
            if (document.getElementById(e)) { return document.getElementById(e); }
        }


        //父子同域才可以使用
        //document.domain = '';如果父子同域后缀,则可以通过设置该属性而实现跨域访问

        window.autoRefresh = function () {
            this.getCurrentIframe = function () {
                if (!parent || parent.document.getElementsByTagName('iframe').length === 0) {
                    return undefined;
                }
                var iframes = parent.document.getElementsByTagName('iframe');
                for (var i = 0; i < iframes.length; i++) {
                    if (iframes[i].src === document.location.href) {
                        return iframes[i];
                    }
                }

            }

            var that = this;

            this.init = function () {


                if (!parent['autoRefresh_checkbox_checked']) {
                    parent['autoRefresh_checkbox_checked'] = $$('autoRefresh_checkbox').checked;
                }
                else {
                    $$('autoRefresh_checkbox').checked = parent['autoRefresh_checkbox_checked'];
                }

                $$('autoRefresh_checkbox').onchange = function () {
                    parent['autoRefresh_checkbox_checked'] = $$('autoRefresh_checkbox').checked;


                };
                $$('autoRefresh_checkbox').onclick = function () {

                    $$('autoRefresh_checkbox').checked === false
                                       ? $$('autoRefresh_select').className = $$('autoRefresh_label').className = 'gray'
                                       : $$('autoRefresh_select').className = $$('autoRefresh_label').className = 'black';
                }

                if (!parent['autoRefresh_select_selected']) {
                    parent['autoRefresh_select_selected'] = $$('autoRefresh_select').value;
                }
                else {
                    $$('autoRefresh_select').value = parent['autoRefresh_select_selected'];
                }
                $$('autoRefresh_select').onchange = function () {
                    parent['autoRefresh_select_selected'] = $$('autoRefresh_select').value;
                    this.start();
                };


            }

            this.start = function () {
                var time = parseInt($$('autoRefresh_select').value) * 1000 * 60;
                setInterval(function () {
                    if ($$('autoRefresh_checkbox').checked) {
                        that.getCurrentIframe().src = document.location.href;
                    }
                }, time);
            }

            this.init();
        }



        new autoRefresh().start();

    </script>
</body>

</html>


if you put these codes in the iframe,then iframe can refresh auto.

原文地址:https://www.cnblogs.com/langu/p/3951275.html