Problem: Setting MSIE iframe innerHTML change relative href/src to absolute href/src

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Soren Vejrum

    Problem: Setting MSIE iframe innerHTML change relative href/src to absolute href/src

    I am working on a web-based html editor using MSIE's designmode and
    iframes.

    Everything works just fine, but MSIE changes all my relative "a href"
    and "img src" links (i.e. "/index.asp") to absolute links (i.e.
    "http://localhost/index.asp") when I set the iframe's innerHTML.

    This is bad as the links are supposed to be relative. How can I avoid
    this? Any solutions/suggestions are much appreciated.

    - This (setting the innerHTML) works just fine in Mozilla/Netscape.

    - I have tried to create a selection/range and use "pasteHTML" instead
    but the result is the same.

    - I have tried to set the "html head base href" in the initial
    document loaded by the iframe but the result is the same.


    Example:

    myiframe.conten tWindow.documen t.body.innerHTM L = '<a
    href="/index.asp">xxx</a>';
    alert(myiframe. contentWindow.d ocument.body.in nerHTML);

    Output:

    <a href="http://localhost/index.asp">xxx</a>
  • Evertjan.

    #2
    Re: Problem: Setting MSIE iframe innerHTML change relative href/src to absolute href/src

    Soren Vejrum wrote on 05 jul 2003 in microsoft.publi c.scripting.jsc ript:
    [color=blue]
    > I am working on a web-based html editor using MSIE's designmode and
    > iframes.
    >
    > Everything works just fine, but MSIE changes all my relative "a href"
    > and "img src" links (i.e. "/index.asp") to absolute links (i.e.
    > "http://localhost/index.asp") when I set the iframe's innerHTML.
    >
    > This is bad as the links are supposed to be relative. How can I avoid
    > this? Any solutions/suggestions are much appreciated.
    >
    > - This (setting the innerHTML) works just fine in Mozilla/Netscape.
    >
    > - I have tried to create a selection/range and use "pasteHTML" instead
    > but the result is the same.
    >
    > - I have tried to set the "html head base href" in the initial
    > document loaded by the iframe but the result is the same.
    >
    >
    > Example:
    >
    > myiframe.conten tWindow.documen t.body.innerHTM L = '<a
    > href="/index.asp">xxx</a>';
    > alert(myiframe. contentWindow.d ocument.body.in nerHTML);
    >
    > Output:
    >
    > <a href="http://localhost/index.asp">xxx</a>
    >[/color]

    You have a iframe that is not filled by an html file, but by innerHTML.

    Such "file" has no location so it cannot have relative links !!!

    So either it makes it's own absolute links or it does not wort.

    --
    Evertjan.
    The Netherlands.
    (Please change the x'es to dots in my emailaddress)

    Comment

    • Evertjan.

      #3
      Re: Problem: Setting MSIE iframe innerHTML change relative href/src to absolute href/src

      Evertjan. wrote on 05 jul 2003 in microsoft.publi c.scripting.jsc ript:[color=blue]
      > or it does not wort.[/color]

      "or it does not work."

      --
      Evertjan.
      The Netherlands.
      (Please change the x'es to dots in my emailaddress)

      Comment

      • Soren Vejrum

        #4
        Re: Problem: Setting MSIE iframe innerHTML change relative href/src to absolute href/src

        Thanks, but the iframe is actually created in an html file with a dummy html
        file (with html, head, title, style sheet and body tags) loaded for the
        iframe before I try to replace the innerHTML.

        In the meantime I have found a "hack" to circumvent this "error". I can
        replace the iframe body content through "write":

        myiframe.conten tWindow.documen t.write('<a href="/index.asp">xxx</a>');

        However, I think this is ugly and would prefer to do this through the DOM if
        at all possible.

        Comment

        • Evertjan.

          #5
          Re: Problem: Setting MSIE iframe innerHTML change relative href/src to absolute href/src

          Soren Vejrum wrote on 05 jul 2003 in comp.lang.javas cript:
          [color=blue]
          > Thanks, but the iframe is actually created in an html file with a
          > dummy html file (with html, head, title, style sheet and body tags)
          > loaded for the iframe before I try to replace the innerHTML.
          >
          > In the meantime I have found a "hack" to circumvent this "error". I
          > can replace the iframe body content through "write":
          >
          > myiframe.conten tWindow.documen t.write('<a
          > href="/index.asp">xxx</a>');
          >
          > However, I think this is ugly and would prefer to do this through the
          > DOM if at all possible.[/color]

          First who will see the "uglyness" ?

          Could you have javascript in the iframe file FETCH the value from the
          parent instead of having the parent sending it to the file ?

          --
          Evertjan.
          The Netherlands.
          (Please change the x'es to dots in my emailaddress)

          Comment

          • Lasse Reichstein Nielsen

            #6
            Re: Problem: Setting MSIE iframe innerHTML change relative href/src to absolute href/src

            "Soren Vejrum" <vejrum@doek.dk > writes:
            [color=blue]
            > In the meantime I have found a "hack" to circumvent this "error". I can
            > replace the iframe body content through "write":
            >
            > myiframe.conten tWindow.documen t.write('<a href="/index.asp">xxx</a>');
            >
            > However, I think this is ugly and would prefer to do this through the DOM if
            > at all possible.[/color]

            It is (almost) DOM.

            The "write" method of the HTMLDocument interface is part of DOM 2 HTML
            (except that the DOM expects the document stream to have been openend
            by the "open" function first).

            The "contentWin dow" property is not DOM 2, but the "contentDocumen t"
            property is, and is understood by Mozilla and Opera (but not IE, ofcourse).
            The "contentWin dow" property is understood by Mozilla and IE, but should
            be equivalent to "frames['iframeName']" anyway.

            /L
            --
            Lasse Reichstein Nielsen - lrn@hotpop.com
            Art D'HTML: <URL:http://www.infimum.dk/HTML/randomArtSplit. html>
            'Faith without judgement merely degrades the spirit divine.'

            Comment

            Working...