Написание jQuery для изменения размеров динамического iframe при нажатии

Я пытаюсь создать небольшой скрипт, который изменит размеры iframe при нажатии iframe. Вот код iframe:

$("#myKAframe").click(function () { 
    $('#myKAframe').css({ "height": "100%", "width": "100%" }); 
});
 <script
  src = "https://code.jquery.com/jquery-3.5.1.js"
  integrity = "sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc = "
  crossorigin = "anonymous"></script>
 <iframe id = "myKAframe" src = "ka.html" title = "KA"
        style = " padding: 0px; margin: 10px 20px; position: fixed; bottom: 0px; overflow: visible; opacity: 1; border: 0px; z-index: 999998; transition-duration: 250ms; transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); transition-property: opacity, top, bottom; right: 0px;">
 </iframe>



       

Моя проблема в том, что, во-первых, код не работает. И во-вторых, я не знаю, как сделать jquery таким, чтобы при повторном нажатии на iframe он возвращался к малым размерам. Я новичок в jQuery, поэтому любая помощь, которую я могу получить, будет очень признательна.

Вам нужно либо поместить свой скрипт в обратный вызов document.ready, поместить его после разметки, на которую он ссылается, либо использовать event delegation. Все темы избитые. Затем подумайте, как вы будете отслеживать состояние с помощью переменной, файла cookie, локального хранилища или чего-то еще. Эта часть вашего вопроса слишком широка.

isherwood 14.12.2020 18:46
toggleClass() пригодится для второй части вашего вопроса.
Liftoff 14.12.2020 18:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Первая проблема заключается в том, что <iframe></iframe> сам по себе не кликабельный элемент. Щелчок «на» iframe на самом деле является кликом по содержимому внутри iframe.

Внутри iframe можно обнаружить щелчок. Взгляните на другие обсуждения того, как обнаружить щелчок внутри iframe здесь, на SO.

Ответ принят как подходящий

как написано здесь , вы не можете добавить прослушиватель кликов в iframe, но вы можете добавить прослушиватель в тело iframe (взято из здесь)
а для создания системы переключения вы можете просто создать логическое значение, которое будет изменяться при каждом нажатии

var big = false;
$(function () {  
    $("#myKAframe").on("load",function(){


document.getElementById("myKAframe").contentWindow.document.body.onclick = 
function() {
  if (big) $('#myKAframe').css({ "height": "auto", "width": "auto" }); 
  else $('#myKAframe').css({ "height": "100%", "width": "100%" }); 
  big = !big;
}
});
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</script>
<iframe id = "myKAframe" src = "https://www.example.com/" title = "hello"
    style = " padding: 0px; margin: 10px 20px; position: fixed; bottom: 0px; overflow: visible; opacity: 1; border: 0px; z-index: 999998; transition-duration: 250ms; transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); transition-property: opacity, top, bottom; right: 0px;">
</iframe>

Большое спасибо! Это имеет большой смысл. Но когда я пытаюсь реализовать код, я продолжаю получать «неопределенную ссылку $», я не думаю, что знаю достаточно jquery, чтобы понять, в чем проблема, но есть ли что-то, чего мне не хватает в отношении размещения $ в фрагмент кода, который вы предоставили.

RandomVector12 14.12.2020 19:29

вы добавили jquery?

ATP 14.12.2020 19:49

Ага. На самом деле это были просто некоторые файлы, названные вне области видимости. Теперь это работает! Еще раз спасибо!

RandomVector12 14.12.2020 20:05

@ConstantFuture, пожалуйста, примите один из ответов

ATP 18.01.2021 14:31

Другие вопросы по теме