Hi Jens,

I made these changes:
<code>
import com.google.gwt.dom.client.IFrameElement;
private static final IFrameElement iframe =
Document.get().createIFrameElement();


FlowPanel innerBox = new FlowPanel();
innerBox.getElement().appendChild(iframe);

public static void setIFrame(IFrameElement ife, String url) {
        try {
            RequestBuilder builder = new
RequestBuilder(RequestBuilder.POST, url);
            Request request = builder.sendRequest(null, new
RequestCallback() {
                @Override
                public void onError(Request request, Throwable exception) {
                    Window.alert("Error setIFrame Load");
                }

                @Override
                public void onResponseReceived(Request requestli, Response
responseli) {
                    if (200 == responseli.getStatusCode()) {
                        fillIframe(ife,responseli.getText());
                        addHeadElement(ife, "mycss.css");
                    } else {
                        Window.alert("Oops Server Returned: " +
responseli.getStatusCode());
                    }
                }
                final native void addHeadElement(IFrameElement iframe,
String cssUrl) /*-{
                  setTimeout(function() {

                    var body;
                    if ( iframe.contentDocument ) {
                      // FF
                      iframe.contentDocument.designMode= "On";

iframe.contentDocument.execCommand('styleWithCSS',false,'false');
                      body= iframe.contentDocument.body;
                    }
                    else if ( iframe.contentWindow ) {
                      // IE
                      body = iframe.contentWindow.document.body;
                    }

                    if (body == null) {
                      return;
                    }

                    body.className = "custom-body-classname";
                    var head = body.previousSibling;
                    if(head == null) {
                      head =
iframe.contentWindow.document.createElement("head");


iframe.contentWindow.document.childNodes[0].insertBefore(head, body);
                    }
                    var fileref =
iframe.contentWindow.document.createElement("link");
                    fileref.setAttribute("rel", "stylesheet");
                    fileref.setAttribute("type", "text/css");
                    fileref.setAttribute("href", cssUrl);
                    head.appendChild(fileref);
                  }, 50);
                }-*/;

            final native void fillIframe(IFrameElement iframe, String
content) /*-{
                  var doc = iframe.document;

                  if(iframe.contentDocument)
                    doc = iframe.contentDocument; // For NS6
                  else if(iframe.contentWindow)
                    doc = iframe.contentWindow.document; // For IE5.5 and
IE6

                   // Put the content in the iframe
                  doc.open();
                  doc.writeln(content);
                  doc.close();
                }-*/;



            });
        } catch (Throwable e) {
            Window.alert("Error During Log Out");

        }
    }
</code>

Clicking from outside renders the area, but the click from inside the
iframe are broken, it offers a select to move rather then the click fo fill
the area.

Also the iframe is not sized it is very small.

Any suggestions?



On Wed, Apr 12, 2017 at 11:52 AM, Ed <[email protected]> wrote:

> @Jens Thank You I will look into the options
>
> On Wed, Apr 12, 2017 at 11:36 AM, Jens <[email protected]> wrote:
>
>> Well there are two solutions:
>>
>> 1.) use an iFrame => opening links inside the iframe should just work.
>> However the URL won't be displayed in the browsers url bar, maybe you don't
>> want that. And because you mentioned it: The iframe must not have a fixed
>> size, you can stretch it via CSS, an example using CSS Flexbox:
>> https://jsfiddle.net/zzvtafv6/
>>
>> 2.) Make a custom widget/composite that takes the HTML and displays it as
>> you do now. However that widget/composite should then intercept all clicks
>> on anchors, prevent the browser default action, extract the href url and
>> download the contents using a XMLHttpRequest. Once you have the result you
>> can again set the html into your custom widget/composite. Basically don't
>> let the browser fetch the url but do it yourself. However you must
>> implement additional logic for clicks on anchors with modifiers and other
>> special cases (CTRL + left click, right click -> open as, right click ->
>> open) that trigger specific browser actions like opening the link in a new
>> tab. It might be a bit tricky to get right so the user does not notice that
>> you have actually intercepted their clicks.
>>
>> Using an iframe is probably the easiest solution, and they are still
>> allowed in HTML5.
>>
>>
>> Maybe there is a possible 3rd solution using web components / html
>> import, see: http://webagility.com/posts/web-components-vs-iframes but I
>> think you still need to intercept clicks that way, as in the 2nd solution.
>>
>>
>> -- J.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "GWT Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/google-web-toolkit.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to