Как получить содержимое iframe с помощью GWT Query?
Я пытаюсь сделать так:
$("iframe.cke_dialog_ui_input_file").contents()
но это возвращает:
< #document(gquery, error getting the element string representation: (TypeError) @com.google.gwt.dom.client.DOMImplMozilla::toString(Lcom/google/gwt/dom/client/Element;)([JavaScript object(8570)]): doc is null)/>
Но документ не является нулевым!
Помогите мне пожалуйста решить эту проблему:(
UPD. HTML-код:
<iframe id="cke_107_fileInput" class="cke_dialog_ui_input_file" frameborder="0" src="javascript:void(0)" title="Upload Image" role="presentation" allowtransparency="0">
<html lang="en" dir="ltr">
<head>
<body style="margin: 0; overflow: hidden; background: transparent;">
<form lang="en" action="gui/ckeditor/FileUploadServlet?CKEditor=gwt-uid-7&CKEditorFuncNum=0&langCode=en" dir="ltr" method="POST" enctype="multipart/form-data">
<label id="cke_106_label" style="display:none" for="cke_107_fileInput_input">Upload Image</label>
<input id="cke_107_fileInput_input" type="file" size="38" name="upload" aria-labelledby="cke_106_label">
</form>
<script>
window.parent.CKEDITOR.tools.callFunction(90);window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction(91)}
</script>
</body>
</html>
</iframe>
2 ответа
Решение
contents()
метод возвращает HTMLDocument
так что обычно вы должны найти <body>
манипулировать этим.
$("iframe.cke_dialog_ui_input_file").contents().find("body");
Распространенной ошибкой является запрос iframe до того, как он будет полностью загружен, поэтому закодируйте задержку, используя Timer
, Scheduler
или же GQuery.delay()
, Например:
$("iframe.cke_dialog_ui_input_file")
.delay(100,
lazy()
.contents().find("body")
.css("font-name", "verdana")
.css("font-size", "x-small")
.done());
Сначала получите элемент iframe, используя javascript, как ваш существующий код, и сохраните его в Iframe из GWT.
IFrameElement iframe = (IFrameElement) element;
Теперь используйте iframe для получения контента
iframe.getContentDocument().getBody().getInnerText();
Надеюсь, это поможет вам получить значения.