/ / Как бих могъл да откривам външни събития, свързани с даден iframe? - javascript, html, css, iframe, събития

Как да отида за откриване на събития onclick извън дадена рамка? - javascript, html, css, iframe, събития

Имам страница, която има куп различниiframes (A, B, C, D) - всички те са напълно видими по всяко време. Заедно, те съставляват различните части на потребителския интерфейс на моето приложение. Едно от тези вградени рамки, iframe D - съдържа друго, по-малко iframe (iframe X), което понякога се вижда от действието на потребителя. Мога лесно да се справя с това в рамките на iframe D чрез поставяне на onclick върху тялото. Ако в действителност открия клик в тялото на iframe D, това означава, че не натискат iframe X, така че мога да скрия iframe X чрез CSS.

Проблемът е в другите рамки - A, B и C. Ако потребителят кликне в тях, искам също да скрия iframe X. В момента имам работа - но не добре. За всеки от тези фреймове (A, B, C) имам код, който ще съобщава кликванията на тялото на iframe D. Не харесвам този подход, защото iframames A, B, C имат познания за iframe X - трябва наистина няма нужда от това, а просто добавя към файловете, които трябва да променя, за да поддържа функцията, предлагана от iframe X. Има ли някакъв начин мога да се справя откриването на външни onclick събития от вътре в iframe D? Това ще остави iframe X да покаже / скрие логиката в рамките на iframe D, което прави кода много по-лесен за придвижване.

Ако получа, че onclick мониторинг става - аз съм също се чудех дали ще се справят всичко кликвания - например, ако iframe A има някоиOnclick събития, зададени на специфични елементи - сигурно ли ще уловя тези кликвания? Споменавам това, защото сегашното ми решение е недостатъчно (iframames A, B, C отчитат тялото си върху кликовете на iframe D) - някои кликвания не задействат тялото върху клика.

Благодаря предварително момчета. Имайте предвид обаче, че премахването на iframes не е реалистично на този етап от проекта.

Отговори:

1 за отговор № 1

Събитията не променят границите на iframeзащото това би представлявало риск за сигурността. Представете си фишинг сайт, който е вградил уебсайт в банка с вградена рамка и е инсталирал манипулатор, който да регистрира всяка парола, въведена от потребителя в вградената рамка.

Най-добре е да имате инсталирани манипулатори за тялото на външния фрейм, както правите, а може би и да инсталирате манипулатори на onunload, така че да може да преинсталира манипулатора на тялото, както е необходимо.

Да, манипулаторите на събития, които отменят бълбукането на събитие за кликване, ще го скрият от манипулатор на телесно събитие.


1 за отговор № 2

поставете обект на YUI панел върху външния документ.

след това вместо да показва iframe X, покажете YUI панела с модален режим и върху съдържанието на панела поставете <iframe ... src = x>

когато се обадите на parent.panel.show (), той ще се покаже на всички фреймове и лесно може да се настрои, за да може всяко щракване извън панела да го затвори.


0 за отговор № 3

Не можете да направите това по надежден начинограничения в рамката. Може да има много заобикалки, но не сте сигурни колко подходящи за вашите нужди. може би, бихте могли да пинг бекенд от Аякс и ще предизвика промяна? Или, като използвате две версии с отворено дете и една затворена, а след това можете просто да манипулирате родителски скрий / шоу. Или заменете iframe X с нещо друго, но не iframe. и т.н. Те може да не са осъществимо решение за вашите конкретни нужди. Но само идеи.