Замените ссылку href из contextmenu после щелчка правой кнопкой мыши и выбора одного из "open ..." - PullRequest
0 голосов
/ 29 января 2019

Я могу войти в объект contextmenu и отключить его ( Как добавить пользовательское меню, вызываемое правой кнопкой мыши, на веб-страницу? ), но как я могу заменить оригинальный href из объекта ссылки, когда пользователь вправо?щелкните по нему и выберите «открыть в новой вкладке» или «открыть в новом окне» или «открыть в окне инкогнито»?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

На самом деле я нашел лучший / более простой способ добиться этого.replaceLink () отвечает за замену ссылок на текстовое меню здесь:

<html>
   <head>
      <meta charset="utf-8"/>
   </head>
   <body>
      <a href="https://majkesz.pl" id="lol" oncontextmenu="replaceLink(event);">majkesz.pl</a><br>
      <script>
     document.getElementById("lol").onclick = function(event) {
        event.preventDefault();
        window.location.href = "https://www.youtube.com/watch?v=oHg5SJYRHA0";
        return false;
        };


     function replaceLink(e) {
     e.target.href = "https://www.youtube.com/watch?v=oHg5SJYRHA0";

     }
      </script>
   </body>
</html>

К сожалению, вышеупомянутое решение не работает для среднего щелчка мыши для FF и более поздней версии Chrome.вместо этого используйте generic:

<html>
   <head>
      <meta charset="utf-8"/>
   </head>
   <body>
      <a href="https://majkesz.pl" onmousedown="replaceLink(event)" oncontextmenu="replaceLink(event);">majkesz.pl</a><br>
      <script>
     function replaceLink(e) {
     e.target.href = "https://www.youtube.com/watch?v=oHg5SJYRHA0";

     }
      </script>
   </body>
</html>
0 голосов
/ 29 января 2019

Мне кажется, что вы не сможете сделать это по соображениям безопасности.Для взаимодействия с контекстным меню вы можете проверить эту библиотеку http://ignitersworld.com/lab/contextMenu.html.

РЕДАКТИРОВАТЬ: Вы можете попробовать это, хотя это немного странно.

<html>
<head>
</head>
<body>
<a href="http://www.google.com">Google</a>
<script>

    // get all anchor elements
    var anchors = document.getElementsByTagName("a");

    for(var i=0; i<anchors.length; i++){
        var el = anchors[i];

        // add event listener on each anchor element
        el.addEventListener('contextmenu', function(ev) {

            // get the original href value of the element
            var originalTarget = el.href;

            // change it to what you want to go to
            el.href = 'http://www.amazon.com';

            // asynchonously change it back to the original
            setTimeout(function(){
                el.href = originalTarget;
            },1);
        }, false);
    }

</script>
</body>
</html>

это добавляет прослушиватель событий на всеПривязывает элементы и изменяет href при возникновении события контекстного меню, после чего возвращает обратно к своему первоначальному значению.Надеюсь, это работает для вас.

...