JavascriptのWebページの制限を解除

1844 ワード

ラベル(on+evt)形式で書かれた右クリック禁止、選択禁止、コピー禁止を解除できます・・・
現在の互換性に最適な制限解除スクリプトです. 
jQueryバインド、bodyラベル、document、window以外の場所をサポートします.
jsアクセスドメインのframesetとiframeをサポートします.
1.完全なソース
(function(window) {
    var eventArr = ['contextmenu', 'dragstart', 'mouseup', 'copy', 'beforecopy', 'selectstart', 'select', 'keydown'];
 
    function runScript(window) {
        var document = window["document"],
            $ = window["jQuery"],
            unbind = function(ele) {
                eventArr.forEach(function(evt) {
                    ele['on' + evt] = null;
                    if ($) {
                        $(ele).unbind(evt);
                    }
                    try {
                        if (/frame/i.test(ele.tagName)) {
                            runScript(ele.contentWindow);
                        }
                    } catch (err) {}
                });
            };
        [window, document].forEach(unbind);
        for (var i = 0, all = document.all, len = all.length; i < len; i++) {
            var ele = all[i];
            if (ele && ele.nodeType === 1) {
                unbind(ele);
            }
        }
    }
    runScript(window);
})(window);

2:javascript接頭辞+圧縮後のコード
javascript:(function(c){function e(a){var b=a.document,f=a.jQuery,g=function(a){h.forEach(function(b){a["on"+b]=null;f&&f(a).unbind(b);try{/frame/i.test(a.tagName)&&e(a.contentWindow)}catch(c){}})};[a,b].forEach(g);a=0;for(var b=b.all,c=b.length;a<c;a++){var d=b[a];d&&1===d.nodeType&&g(d)}}var h="contextmenu dragstart mouseup copy beforecopy selectstart select keydown".split(" ");e(c)})(window);