0

すべてのハイパーリンクを一時的に無効にし、ポップアップ div がなくなったら再度有効にする必要があるプロジェクトに取り組んでいます。私が書いたこの関数を使用して、すべてのリンクを正常に無効にすることができます。

    function disableHyperlinks(){
        link_targets = Array();
        var anchors = document.getElementsByTagName("a");
        for(var i = 0; i < anchors.length; i++){
            link_targets.push(anchors[i].href);
            anchors[i].href= "#";
        }
     }

また、すべての URL が保存されるため、後でこの関数を使用して元に戻すことができます。

    function enableHyperlinks(){
        var anchors = document.getElementsByTagName("a");
        for(var i = 0; i < anchors.length; i++){
            anchors[i].href= link_targets[i];
        }
    }

上記のコードは問題なく動作するようで、すべてのリンクを削除し、問題なく元に戻しますが、問題は、リンクをクリックした後に「有効化」コードを実行すると、まるで JavaScript のようになることです。リンクを元のリンク先に戻してから、クリックを登録します。したがって、この方法で「無効化」されているにもかかわらず、リンクはページから離れてしまいます。

問題はここに示されています

白い背景の赤い「L」をクリックして、選択用に作成した JavaScript を有効にします。マウスを上に移動すると、青い破線の境界線が表示されます。Web ページの一部を「選択」できるようにする必要があります。リンクもクリックされた場合に別のページにリダイレクトせずに..どうすればこれを適切に行うことができるでしょうか?

(私はJQueryを避けようとしていることに注意してください)

4

3 に答える 3

2

onClick リスナーで作業します。

var areEnabled = false;
function toggleLinks(){
    var anchors = document.getElementsByTagName('a');
    for(var i=0; i < anchors.length; i++)
        anchors[i].onclick = (areEnabled) ? null : function(e){ return false };
    areEnabled = !areEnabled;
};
于 2012-07-10T14:40:51.827 に答える
0

各ハイパーリンクの onclick プロパティを操作してから、以前の状態に戻すことで、最終的に自分の問題を解決することができました。bokonic の応答に関する唯一の問題は、リンクを「再度有効にする」ために onclick プロパティが null に設定されたことでした。これにより、リンクが以前に持っていた JavaScript 機能が無効になります。

var onclickEvents;

function disableHyperlinks(){
    onclickEvents = Array();
    var anchors = document.getElementsByTagName("a");
    for(var i = 0; i < anchors.length; i++){
        onclickEvents.push(anchors[i].onclick);
        anchors[i].onclick=function(){return false;};
    }
}

function enableHyperlinks(){
    var anchors = document.getElementsByTagName("a");
    for(var i = 0; i < anchors.length; i++){
        anchors[i].onclick = onclickEvents[i];
    }
}
于 2012-09-30T13:16:15.410 に答える
0

多くのリンクを検索して無効にする代わりに (ところで、他のクリック可能なオブジェクトに対しては役に立ちません)、divポップアップのすぐ下に別の invisible を作成しz-indexて、ページ全体をカバーし、その下の要素ではなくすべてのクリックをキャッチすることができます。「下位レベル」が無効になっていることをユーザーに警告する視覚効果のために、完全に非表示にする代わりに、半透明にすることもできます。

于 2012-07-10T15:00:33.917 に答える