2016-09-20 5 views
0

У меня есть набор фреймов, который имеет 3 кадра:Как проверить, что кадр фрейме существует

<frameset rows="124, *, 0"> 
    <frame id="f1" scrolling="No" frameborder="0" src="" name="control"> 
    <frame id="f2" frameborder="0" src="" name="main"> 
    <frame id="f3" noresize frameborder="0" name="go"> 
</frameset> 

я собираюсь проверить, если кадр с идентификатором = «f2» существует?

Я попытался:

<script> 
if(document.getElementById("f2").contentDocument.documentElement.innerHTML !== null) { 
alert('ok'); 
} 
</script> 

Но не работал. Я знаю, что я должен сделать что-то вроде:

document.getElementById("f2") 

но нужно больше информации

+0

Что вы имеете в виду под "существует"? Если элемент существует в dom? Если содержимое страницы загружено? – Dekel

+0

Я хочу, чтобы предотвратить инъекцию html, проверьте, существует ли id = "f2"? или удалены пользователем :) @Dekel –

+0

Рамки были удалены из HTML 5. Не используйте их. –

ответ

3

Ну - на самом деле, что вы должны сделать, это проверить только если document.getElementById("f2") вернуть что-то, однако для того, чтобы это работало, вы должны установить доктайп вашего документа FRAMESET:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 

В противном случае браузер не распознает кадра, и он ничего не вернет.

Проверить эту скрипку:
https://jsfiddle.net/b8xg9y8u/

+0

Ты умный мальчик. Спасибо. –

+1

Добро пожаловать :) рад, что я мог бы помочь! – Dekel

1

document.getElementById() возвращает null, если элемент не существует, так что выражение будет ложным, либо добавить ! в The Begining, или добавить свой код в else случае

if (!document.getElementById("f2")) { 
} 

или

if (document.getElementById("f2")) { 
} else { 

} 
+0

document.getElementById ("f2") не может получить доступ к набору фреймов. –