Internet Explorer не устанавливает <img>src точно, преобразовывая% 7E в ~ - PullRequest
1 голос
/ 09 февраля 2012

Через JS я пытаюсь установить атрибут src тега image.

Я устанавливаю URL-адрес файла, который находится на Amazon, но если в имени этого файла есть тильда, Amazon ожидает% 7E. IE меняет это на тильду, в то время как FF сохраняет его в качестве escape-кода. Итак, я говорю браузеру установить src, скажем, 'http://s3.amazon.com/bucket/file%7E1.png',, но в IE он удаляет его обратно в' http://s3.amazon.com/bucket/file~1.png'

Я понял, что он конвертирует его с помощью jQuery ('img') [index] .src. Это подтвердило, что IE изменял% 7E обратно на ~. Это нарушает мой код, потому что Amazon не ожидает, что файл будет запрошен таким образом.

Это происходит в IE 9 во всех трех режимах (режим IE7, режим IE8, режим IE9).

Я пробовал двойное экранирование (используя% 257E, так как% 25 - это код для%), но IE не меняет% 25 на%.

У кого-нибудь есть опыт работы с IE, когда вы меняете данные?


РЕДАКТИРОВАТЬ: я пытался использовать $ ('img') .attr (), но ошибка все еще происходит.

Вот простой способ показать мою проблему. Скопируйте это в файл HTML:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<img src="blank" />
Don't worry about the broken image

(возможно, придется указать IE разрешить межсайтовый JS-запрос)

Затем откройте консоль IE Javascript и запустите

$( 'img' )[0].src = 'http://s3.amazon.com/bucket/file%7E1.png';

Затем запустите

$( 'img' )[0].src

То, что я получаю, это "http://s3.amazon.com/bucket/file~1.png". IE по какой-то причине выполняет здесь некоторую постобработку, и я хочу обойти это так, чтобы src указал на правильное место.

Спасибо за помощь, ребята!


Еще одно редактирование.

Еще немного контекста: я пытаюсь отобразить динамические файлы, загруженные пользователем на S3, поэтому изменение имени файла не вариант.

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Escape %, если вам нужно дословно: %257E

0 голосов
/ 09 февраля 2012

Как и Cheery, я тоже не мог воспроизвести его. Но я бы предложил вам использовать метод jatery .attr. Как это:

jQuery('img').attr('src', url);

Обратите внимание, что вам может потребоваться изменить селектор, если вы хотите нажать на определенный индекс img.

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