фреймы недопустимы в строгом XHTML - PullRequest
3 голосов
/ 25 ноября 2011

Я создаю веб-сайт с Google Map, который по умолчанию генерирует этот код:

<iframe width="550" height="500" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=Amber,+115+Portswood+Road,+Southampton,+SO17+2FX,+United+Kingdom&amp;aq=0&amp;sll=50.923556,-1.394663&amp;sspn=0.006709,0.01929&amp;vpsrc=6&amp;ie=UTF8&amp;hq=Amber,&amp;hnear=115+Portswood+Rd,+Southampton+SO17+2,+United+Kingdom&amp;t=m&amp;ll=50.923178,-1.393676&amp;spn=0.012985,0.027466&amp;z=15&amp;output=embed"></iframe><br /><small><a href="http://maps.google.co.uk/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=Amber,+115+Portswood+Road,+Southampton,+SO17+2FX,+United+Kingdom&amp;aq=0&amp;sll=50.923556,-1.394663&amp;sspn=0.006709,0.01929&amp;vpsrc=6&amp;ie=UTF8&amp;hq=Amber,&amp;hnear=115+Portswood+Rd,+Southampton+SO17+2,+United+Kingdom&amp;t=m&amp;ll=50.923178,-1.393676&amp;spn=0.012985,0.027466&amp;z=15" style="color:#0000FF;text-align:left">View Larger Map</a></small>

Теперь при проверке XHTML Strict выдается ошибка, так как это фреймы, которые устарели, но чтоя должен использовать вместо этого?

Спасибо за помощь

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

Если на вашей странице должен быть установлен iframe Maps, самое простое решение - вместо этого изменить ваш тип документа на XHTML 1.0 Transitional, что позволяет использовать iframes:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Однако, если вы начинаете видеть какие-либо различия в рендеринге страниц (см. стандартный режим по сравнению с почти стандартным режимом ), и вас больше беспокоит то, как ваш сайт выглядит в веб-браузерах, чем проверка разметки, просто сохраните XHTML 1.0 Strict doctype. Браузеры не будут выдавать ошибку просто потому, что страница недействительна XHTML; в любом случае они отлично справятся с вашим iframe.

2 голосов
/ 25 ноября 2011

Существует грязный трюк с Javascript:

function load()
{
    document.getElementById("ramec").innerHTML = '<iframe class="ramec"></iframe>';
}

и:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="yourjshere.js">
</script>
<title></title>
</head>
<body onload="load()">
<div id="ramec">
</div>
</body>
</html>

Документ в первой ссылке проверяется как XHTML1.0 Strict, хотя он использует iframe внутри (попробуйте ссылки внутри документа).Важной частью является то, что Javascript, который помещает iframe в документ, является внешним.

Я не уверен, стоит ли оно всех усилий.Возможно, было бы гораздо полезнее перейти на строгий тип документа HTML4.1 (визуализация страницы была бы такой же, как с XHTML1.0 Strict).

0 голосов
/ 19 июня 2019

Тег объекта выполняет ту же функцию, хаки не требуются.Просто измените атрибут "src" на "data" и добавьте type = "text / html".

<object width="550" height="500" data="http://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=Amber,+115+Portswood+Road,+Southampton,+SO17+2FX,+United+Kingdom&amp;aq=0&amp;sll=50.923556,-1.394663&amp;sspn=0.006709,0.01929&amp;vpsrc=6&amp;ie=UTF8&amp;hq=Amber,&amp;hnear=115+Portswood+Rd,+Southampton+SO17+2,+United+Kingdom&amp;t=m&amp;ll=50.923178,-1.393676&amp;spn=0.012985,0.027466&amp;z=15&amp;output=embed" type="text/html"></object>
...