2009-04-29 2 views
2

Так я это ...Изменить атрибут HREF для правого щелчка Сохранить как?

$(this).attr("href", "http://site.com/images/downloads/wp-" + $(this).parent().parent().attr("id") + "-1024x768.jpg"); 

Проблема заключается в том, что когда я щелкните правой кнопкой мыши> Сохранить ссылку как ... не ссылаются на правильное изображение. Я не уверен, возможно ли это сделать или нет, но я был бы очень признателен, если бы кто-то мог мне помочь в этом. Благодаря!

+0

Если вы проверяете свой источник html, что содержит атрибут href после того, как эта строка была запущена? право или что-то не так? –

+0

jQuery не переписывает html, хотя исходный код не имеет URL-адреса. Фактически, когда вы наводите мышь на изображение, URL-адрес в строке состояния не читается как тот, который я установил с помощью jQuery. Но когда я нажимаю, он приводит меня к ссылке, указанной jQuery. –

+1

Когда ваш код запускается? На $ (document) .ready() или когда-нибудь еще? Если вы используете Firebug (дополнение к firefox), вы сможете просматривать изменения DOM, сделанные jQuery в режиме реального времени, включая изменения атрибутов href. –

ответ

1

Используйте диагностический инструмент, например Firebug или DOM Inspector, чтобы проверить фактическое конечное значение атрибута.

Простейшее объяснение различных действий при нажатии и сохранении - это если событие перехвачено. «Сохранить как» использует фактическое значение href, тогда как выбор ссылки в противном случае может быть перехвачен (клавиатура, мышь вниз и вверх, щелкните), чтобы установить местоположение на что-то еще.

0

Вы могли бы устанавливать это в $(document).ready(), но тот факт, что вы используете $(this) указывает на код привязки к onclick случае <a>. Это объясняет, почему при наведении курсора на ссылку не отображается измененный href, значение не изменяется, пока посетитель не нажмет на ссылку.

Можете ли вы связать раздел своего $(document).ready(), чтобы подтвердить мои подозрения?

Если я прав, то решение должно состоять в том, чтобы изменить href как часть вашей обработки ready(), а не привязываться к событию onclick в это время.

+0

$ (this) также может быть от каждого() –

+0

@Paolo: Хорошая точка. Тем не менее, он также говорит: «Фактически, когда вы наводите мышь на изображение, URL-адрес в строке состояния не читается как тот, который я установил с помощью jQuery. Но когда я нажимаю, он переводит меня в ссылку, указанную jQuery. ...Поскольку изменение href перед onclick должно привести к правильному URL-адресу в строке состояния, на основе этого комментария я все еще подозреваю, что он привязывает изменение href к событию onclick. Но я буду счастлив, если окажется ошибочным, когда увижу его готовый() код. –

0

вот идея ... поставить «реальное» расположение в HTML, порожденного PHP

затем добавить дополнительный атрибут с «фальшивой» место, а затем использовать JQuery, чтобы переключить их на PageLoad. Это может работать в зависимости от ситуации (т. Е. Не будет разрушать все, если пользователь отключил js и использует «реальное» местоположение)

это решит вашу проблему и сохранит конечный результат одинаково для почти всех ваших пользователей :)

Смежные вопросы