Извлечение javascript из ссылки якоря с использованием jQuery или JavaScript - PullRequest
1 голос
/ 28 октября 2010

Кто-нибудь знает простой способ использовать jQuery (или другой Javascript, если необходимо) для извлечения только части Javascript атрибута href якорного тега (как показано ниже), поэтому он может быть назначен другому событию во время выполнения?1001 *

<a id="FancyLink" href="javascript:DoSomething('Input1')">Do</a>

Я знаю, как получить полное значение атрибута якоря, используя jQuery, и, полагаю, я мог бы просто сделать это, а затем вручную отключить префикс "javascript:", но мне интереснолучший способ получить объект функции JavaScript из приведенного выше примера.

Спасибо за помощь!

Брайан

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Вот так:

var code = $('#FancyLink').attr('href').replace(/^javascript:\s*/, '');

Это вернет строку, которая понадобится вам eval для выполнения.
Для повышения производительности вы можете один раз вызвать eval и создатьфункция, подобная этой:

var executor = eval('[ function() { ' + code + ' } ]')[0];

Массив необходим, потому что IE не может напрямую возвращать функцию из eval.

Для еще большей производительности вообще не делайте этого.

0 голосов
/ 31 октября 2010

Предполагая, что вы не можете изменить код <a href="javascript:...">, что является проблемой, вы также можете присвоить href значение location, что примерно соответствует тому, что происходит, когда пользователь все равно щелкает ссылку.Это избавит вас от необходимости отрезать часть «javascript:» и будет более естественным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...