Telstra Ответов: 2

При щелчке правой кнопкой мыши функции href javascript не работает


Этот код javascript не работает, когда я щелкаю Правой Кнопкой Мыши на Href и выбираю открыть в новой вкладке.
Код href представляет
a href='javascript:relativeURI("//my.barcapint.com/BC/barcaplive?url=%2Fcci%2Ffirm%2Ftopics%2FFalcon%2F&LLPreviousMenuCode=INT_TOPICS");'>


function relativeURI(uriString) {
    var protocal = window.location.protocol;
    var filePath = protocal + uriString;
    window.open(filePath, '_blank');
}


пожалуйста, предложите.

Что я уже пробовал:

Не в состоянии разобраться для правого клика. Код не работает на IE и chrome

2 Ответов

Рейтинг:
9

Richard Deeming

В этом случае вам вообще не нужен Javascript:

<a href="//my.barcapint.com/..." target="_blank" rel="noreferrer noopener">

Это называется относительным URL-адресом протокола:
Протокол, URL-адрес - пол ирландских[^]

NB: Как уже упоминалось в статье, сейчас это считается анти-паттерном. Если связанный ресурс доступен по протоколу SSL, то вы всегда должны ссылаться на защищенную версию:
<a href="https://my.barcapint.com/..." target="_blank" rel="noreferrer noopener">


Telstra

Работает ли он независимо от протокола. это означает, что если я наберу http ot https, он будет нормально работать в обоих протоколах.
<a href="//my.barcapint.com/..." target="_blank" rel="noreferrer noopener"></a>

Richard Deeming

Да.

Единственный раз, когда это не работает, - это если вы загружаете HTML-файл с диска, не заходя на веб-сайт.

Telstra

ОК.Спасибо за помощь.

Рейтинг:
1

Karthik_Mahalingam

Он не работает, потому что вы используете javascript в Href, правая кнопка мыши будет работать (перейти к точному пути) только тогда, когда href имеет действительный url.
Это можно исправить многими способами, это один из них, если вы используете jquery, это будет намного проще.

function HandleRightClick(obj, uriString)
{
   // alert('right click');
    var protocal = window.location.protocol;
    var filePath = protocal + uriString;
    obj.href = filePath; // assign the url to href attribute

}



<a id="myAnchor" oncontextmenu="HandleRightClick(this,'//my.barcapint.com/BC/barcaplive?url=%2Fcci%2Ffirm%2Ftopics%2FFalcon%2F&LLPreviousMenuCode=INT_TOPICS')" onclick="javascript: relativeURI("//my.barcapint.com/BC/barcaplive?url=%2Fcci%2Ffirm%2Ftopics%2FFalcon%2F&LLPreviousMenuCode=INT_TOPICS");" href=""> test</a>


Telstra

Привет Картик,
Используя этот код теперь, когда я прямо нажимаю на href, его открытие происходит в той же вкладке. Нужно открыть его в новой вкладке.

Karthik_Mahalingam

попробуйте этот код в отдельном html-файле и протестируйте его
https://jsfiddle.net/karthikjsf/7m61sLbr/