2015-07-16 7 views
2

Так basicaly у меня есть это:Не может нажать на якоре, если он имеет IFRAME внутри

<a href="myurl"> 
    <iframe>...</iframe> 
</a> 

Если я пытаюсь нажать на <a> ничего будет бороться. Я также попытался добавить класс к своему якорю и попытаться поймать событие через jquery, но ничего не происходит снова.

Есть ли решение для этого?

+0

Я думаю, что вы не можете положить IFRAME внутри '' тег –

+0

Взгляните на высоту якоря. –

ответ

1

Я нашел взломать эту работу, используя только html. Так что мой пример был this:

<a href="http://www.example.com"> 
    <iframe style="width: 163px; height: 163px;" scrolling="no" src="http://www.example.com"></iframe> 
</a> 

и я понял this решение:

<a href="http://www.example.com" style="position: relative; display: block; width: 163px; height: 163px;"> 
    <div style="position:absolute; width: 100%; height: 100%; top: 0; left: 0;"></div> 
    <iframe style="width: 163px; height: 163px;" scrolling="no" src="http://www.example.com"></iframe> 
</a> 
+0

Итак, ваше решение состоит в том, чтобы * продолжить * использовать недопустимый HTML и надеяться, что браузеры будут обрабатывать его так, как вы хотите? *Не хорошая идея. –

+0

1. Я не надеюсь, что браузеры будут обращаться так, как я хочу, я просто знаю, что они это сделают. – paulalexandru

+0

2. Иногда клиенты заставляют вас делать глупые вещи, поэтому вам нужно их делать, даже если вам это нравится или нет, даже если это не имеет смысла. Учитывая это, мне пришлось найти решение для этого случая. – paulalexandru

1

Наличие iframe внутри a недействителен. HTML. Если у вас есть недопустимый документ, браузер может отображать и обрабатывать его, однако его авторы считают нужным, в том числе не делать того, что вы ожидали.

a's content model не является прозрачным, но должно быть не interactive content:

Интерактивный контент содержание, которое специально предназначено для взаимодействия с пользователем.

=>aaudio (если атрибут controls присутствует) buttonembediframeimg (если атрибут usemap присутствует) input (если атрибут type не в hidden состоянии) keygenlabelobject (если usemap атрибут присутствует) selecttextareavideo (если присутствует атрибут controls)

(мой акцент на iframe)

Вместо этого поместите ссылку в содержимое iframe «s.

+0

Я не могу поместить ссылку в контент iframe, потому что iframe, потому что я использую его во многих местах и в других местах мне не нужен этот якорь внутри iframe. – paulalexandru

+0

@paulalexandru: Это легко решить, например, с параметром строки запроса, который JavaScript в кадре видит и показывает/скрывает ссылку по мере необходимости. В нижней строке вы не можете делать то, что вы пытаетесь сделать, поместив 'iframe' в элемент' a', это просто не сработает. –

+0

Я попытался с jquery, и это не сработало, так или иначе, я нашел решение, используя только html, вы можете проверить его ниже. – paulalexandru

0

Если вы хотите использовать якорь для IFRAME почему бы не сделать это так:

index.html:

<iframe src="iframe_page.html"></iframe> 

iframe_page.html:

<html> 
    <head> 
    <title>Page</title> 
    </head> 
    <body> 
    <a href="another_page.html"> 
    ... 
    </a> 
    </body> 
</html> 
0

Это недопустимый HTML. Вы должны использовать JavaScript для повторения требуемого действия. Напечатайте код на моем планшете, но создайте действие click, которое приведет вас к нужному URL.