Есть ли лучший (более эффективный) способ запуска href? - PullRequest
1 голос
/ 09 июля 2010

Мне было интересно, есть ли лучший способ для выполнения атрибута href ссылки, кроме его оценки?

Например:

eval($("a[href^=javascript:]").attr("href").replace(/^javascript:/,"")); // better (more eficient) way to do this?

Спасибо !!

Ответы [ 3 ]

2 голосов
/ 09 июля 2010

Javascript должен также выполняться в строке URL, почти как букмарклет. Попробуйте установить его в window.location, не удаляя javascript:

window.location = el.attr("href");
2 голосов
/ 09 июля 2010

Если вы говорите о произвольном коде JS, встроенном в ссылку в стиле href="javascript:window.open('blah')", то это не совсем так.

Вы должны уточнить вопрос, хотя - hrefs для тегов привязки действительно означают ссылкик другим документам, и вы не запускаете их, вы переходите к им.Все, что вы действительно спрашиваете в своем вопросе, это как выполнить произвольный код javascript, представленный в виде строки, что является более точным и делает ответ более ясным.(Если вы попытаетесь eval стандартному атрибуту href URL-адреса, ничего интересного не произойдет.)

Если вы действительно имели в виду «как мне поступить так же, как если бы я нажал на эту ссылку», тогдаэто довольно сложно.Нет конкретного способа сделать это, поэтому вы должны попытаться эмулировать эффекты, читая атрибуты ссылки и синтезируя эквивалентное действие в Javascript.Например, если вы забудете проверить атрибут target, это просто не сработает, и я уверен, что есть и много других подводных камней.

0 голосов
/ 09 июля 2010

Если вы пытаетесь выполнить Javascript для тега a, лучше сначала использовать атрибут onclick для тега a.Таким образом, вы можете сделать $("a#whatever-link").click();, чтобы получить тот же результат.

...