423,127 Members | 952 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 423,127 IT Pros & Developers. It's quick & easy.

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

P: n/a
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.contentWindow.document.body.innerHTML = '<a
href="/index.asp">xxx</a>';
alert(myiframe.contentWindow.document.body.innerHT ML);

Output:

<a href="http://localhost/index.asp">xxx</a>
Jul 20 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
Soren Vejrum wrote on 05 jul 2003 in microsoft.public.scripting.jscript:
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.contentWindow.document.body.innerHTML = '<a
href="/index.asp">xxx</a>';
alert(myiframe.contentWindow.document.body.innerHT ML);

Output:

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


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)
Jul 20 '05 #2

P: n/a
Evertjan. wrote on 05 jul 2003 in microsoft.public.scripting.jscript:
or it does not wort.


"or it does not work."

--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
Jul 20 '05 #3

P: n/a
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.contentWindow.document.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.
Jul 20 '05 #4

P: n/a
Soren Vejrum wrote on 05 jul 2003 in comp.lang.javascript:
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.contentWindow.document.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.


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)
Jul 20 '05 #5

P: n/a
"Soren Vejrum" <ve****@doek.dk> writes:
In the meantime I have found a "hack" to circumvent this "error". I can
replace the iframe body content through "write":

myiframe.contentWindow.document.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.


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 "contentWindow" property is not DOM 2, but the "contentDocument"
property is, and is understood by Mozilla and Opera (but not IE, ofcourse).
The "contentWindow" property is understood by Mozilla and IE, but should
be equivalent to "frames['iframeName']" anyway.

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

This discussion thread is closed

Replies have been disabled for this discussion.