jQuery Mobile не может динамически изменять изображение на устройствах Android - PullRequest
0 голосов
/ 20 февраля 2019

jQuery Mobile не может динамически изменять изображение на устройствах Android.Пожалуйста, помогите.

дополнительная информация:

Я пытаюсь изменить образ безопасности.Он запускается локально на моей машине, но я могу получить доступ к коду и API с помощью моего сетевого IP-адреса, и это работает.Когда я пытаюсь изменить изображение, полученное с URL-адреса, оно меняется только в сафари, которое я пробовал в Chrome, Firefox и т. Д., Но безуспешно.

Я попытался установить date.getTime (), но это тоже не сработало.Я отладил код, и когда я нажимаю кнопку, с изображением ничего не происходит, поле ввода меняется на ноль.

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

  $("#newSecurityCode").on("click",function () {
        $("#securityCheckImg").attr("src", urlprefix() + "captcha");
        $("#securityTextField").val("");
    });

Этот код работает в Safari Mac и iPhone, но не в Chrome, Firefox .....

$("#newSecurityCode").click(function() {
  $("#securityCheckImg").attr("src", url());
  $("#securityTextField").val("");
});
<tr>
  <td>
    <img id="securityCheckImg">
  </td>
</tr>

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Я думаю, что это проблема кэшированных значений ... (Вы должны прочитать this перед публикацией;))

Давайте попробуем это:

 $("#newSecurityCode").on('click touchstart', function () {
   d = new Date();
   $("#securityCheckImg").attr("src", url() + "?" + d.getTime());
   $("#securityTextField").val("");
 });

Эта отметка времени заставит браузер перезагрузить изображение

0 голосов
/ 20 февраля 2019

Мало вещей.

Никогда не используйте классические привязки событий щелчка jQuery.Всегда делайте это с помощью on и делайте это на объекте документа.jQuery Mobile код медленный, есть большая вероятность, что ваш JavaScript будет выполнен до того, как контент будет загружен в DOM.Если вы найдете это в документе, то не имеет значения, является ли img частью DOM или нет.Как только img будет загружен в DOM, это событие будет распространено на него.

Так что используйте его так:

    $(document).on('click touchstart', '#newSecurityCode',function () {
        $("#securityCheckImg").attr("src", url());
        $("#securityTextField").val("");
    });

Другое дело, если вы выполняете этот код на своем реальном Androidтелефон, то вы не можете выполнить локальный URL-адрес.Localhost работает только при запуске на вашем компьютере.Подключите телефон к Wi-Fi и называйте IP-адрес вашего компьютера вместо localhost.Конечно, это будет работать только в том случае, если вашему серверу разрешен доступ за пределами вашего компьютера.

0 голосов
/ 20 февраля 2019

Не так много информации, но вы можете попробовать это:

$("#newSecurityCode").on('click touchstart', function () {
  $("#securityCheckImg").attr("src", url());
  $("#securityTextField").val("");
});

<tr>
    <td><img id="securityCheckImg"></td>
</tr>

Или вы можете использовать vanilla JS и ontouchstart , если вы нацелены только на мобильные устройства:Пример здесь: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_touchstart

...