如何使用GWT Query获取iframe的内容?

时间:2013-10-07 08:39:06

标签: java gwt iframe gwtquery

我试着这样做:

$("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 个答案:

答案 0 :(得分:2)

首先像您现有的鳕鱼一样使用javascript获取iframe元素,并将其存储到GWT的iframe中

IFrameElement iframe = (IFrameElement) element;

现在使用iframe获取内容

iframe.getContentDocument().getBody().getInnerText();

希望它能帮助您获得价值。

答案 1 :(得分:1)

contents()方法返回HTMLDocument,因此通常您必须找到<body>来操纵它。

$("iframe.cke_dialog_ui_input_file").contents().find("body");

常见的错误是在iframe完全加载之前查询iframe,因此使用TimerSchedulerGQuery.delay()编码延迟。例如:

$("iframe.cke_dialog_ui_input_file")
  .delay(100, 
    lazy()
      .contents().find("body")
        .css("font-name", "verdana")
        .css("font-size", "x-small")
    .done());