Это довольно конкретная проблема, с которой я сталкиваюсь, но у меня нет идей о том, как отлаживать это или даже выяснить, будет ли это вообще работать на мобильных устройствах браузеры.Событие JQuery click не работает для iframe, в мобильном браузере
У меня есть 2 страницы (в том же домене SAME, поэтому у меня нет проблем с политикой междоменной безопасности), один из них находится в iframe внутри другого. Так как мне нужно, чтобы поймать кликов на обоих родителей и ребенка, я создал DIV, который покрывает IFRAME, а затем вызывает метод щелчка на дочерний элемент:
Вот демонстрационный код, который я сделал:
Родитель файл:
<script>
$(document).ready(function()
{
$("#floating_play_button").click(function()
{
alert("just clicked floating_play_button... will try to click iframe's on click for link2");
$('#slider').contents().find("#link1").click();
});
});
</script>
<div id="floating_play_button" style="cursor:pointer; left: 0px; top:0px; width:100%; height:395px; position:absolute; border:2px solid red;"></div>
<iframe id="slider" src="slider_test.php" width="957" height="337" frameBorder="1" style="border:2px solid green;" ></iframe>
Ребенка страница:
<script>
$(document).ready(function()
{
$("#link1").click(function()
{
alert("#link1 clicked...");
});
});
</script>
<div id="link1">
<a href="#">Link 1</a><br />
</div>
Это прекрасно работает на все настольные браузеры, но не на Chrome для Android (версии от 22 июля 2013 года) по умолчанию Android б рубильник, iPad или iPhone.
На странице ребенка я попробовал обе эти формы, но ни работы:
$(document).on('click', '#link1', function()
{
alert("on click activated for link1");
});
$("#link1").click(function()
{
alert("#link1 clicked...");
});
В качестве дополнительной записке, селектор в порядке. Я могу сделать что-то вроде изменения текстовых атрибутов и подобных с помощью jQuery, и он отлично работает. Я просто не могу назвать событие click.
Любые советы или указатели?
Спасибо!
http://touchpunch.furf.com/ и прочитайте первый абзац о том, почему они сделали этот сценарий. Вероятно, это одна и та же проблема для вас. –