Closed
Bug 240652
Opened 20 years ago
Closed 20 years ago
cannot set innerHTML in XHTML (converted from XML, via XSLT)
Categories
(Core :: XSLT, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 155723
People
(Reporter: bugzilla, Assigned: peterv)
Details
Attachments
(4 files)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7b) Gecko/20040316 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7b) Gecko/20040316 In the example provided below xsltbug.html you can hover over div and table links and the table is changed. but when this same HTML is generated by a XML and XSLT (xsltbug.xml) setting the innerHTML seems to just clear it Reproducible: Always Steps to Reproduce: 1.load xsltbug.html hover over div or table links 2.load xsltbug.xml hover over div or table links 3.see that step 2 does not modify the text like step 1 did Actual Results: see that step 2 does not modify the text like step 1 did Expected Results: behaved just like step1
Comment 3•20 years ago
|
||
Dup of XSLT not creating a HTML document, probably...
Assignee: parser → peterv
Component: HTML: Parser → XSLT
QA Contact: keith
Whiteboard: DUPEME
Attachment #146230 -
Attachment mime type: application/octet-stream → text/plain
I should add that there is a javascript error Error: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLElement.innerHTML]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/home/html/test/xsltbug.js :: changeContent :: line 10" data: no]
Comment 7•20 years ago
|
||
This works as designed. Mozilla does not support innerHTML in XHTML. As your testcase is HTML, it works over there, generate a static XHTML testcase (with .xml ending, too), and you'll see that it doesn't work over there. XSLT does generate an HTML document if you use the html output method, so there is an easy workaround.
Status: UNCONFIRMED → RESOLVED
Closed: 20 years ago
Resolution: --- → WONTFIX
Whiteboard: DUPEME
Axel: I can't find where in the code we're disabling innerHTML for xhtmlelements. I wouldn't be surpriced if it's there and I just don't see it.
Comment 9•20 years ago
|
||
The codepath to "not supported" is rather involved. XHTML as in XML is received with a content type of text/xml, which is the content type of the document. innerHTML setter kicks of nsRange::CreateContextualFragment which creates a nsHTMLContentSink. Then htmlparser tries to find the right dtd, which happens to be the expat driver (as the content type is text/xml), and that requires the content sink to implement nsIExpatSink, which the html content sink doesn't do. That's why it doesn't work. jst said, yeah, fine that way. At least I recall him saying so ages ago.
IMHO it would be a good thing to support .innerHTML in XHTML too (of course it would require wellformed xml to be passed), though if everyone is fine with the current state it's no biggie to me. And in any case this isn't xslt related.
Reporter | ||
Comment 11•20 years ago
|
||
As the original bug filer(er) I'd really like to see support for .innerHTML in XHTML objects. I don't understand the technical reasons for it not being supported but as a (lame) web developer I was astounded at the reply that it wasn't 'supported' and will not be supported. This is probably going to rile people, but I don't intend it this way. but it works in IE :P the workaround was very simple to use though. and I am very grateful for that. the more people using XHTML the better in my opinion, I imagine it's infinitely easier to parse and reject badly made pages.
No, it does *not* work in IE. IE has *no* concept what so ever of XHTML. They feed it all through their HTML-parser and create a HTML DOM.
Reporter | ||
Comment 13•20 years ago
|
||
I guess that depends on your perspective (WRT IE and works and does not work). I'm not trying to start a flame war, or upset people. the example I provided works in IE, and does not in mozilla. I filed this bug because I think it 'should' work in mozilla. whatever the underlying technologies, difficulties etc... are interesting, but the fact it does not work for me is the critical issue. the workaround is good, but from what I can tell I'm not doing anything 'wrong' per se. in summary, it would be really really nice (and might even be considered missing functionality that it does) if XHTML DOM supported modifying innerHTML
I'm sorry, but your argument is pretty silly, IE is totally ignoring what you're telling them to and then you say it works in IE? Since you're obviously not needing any XHTML features just use HTML instead of XHTML and it'll work fine in all browsers. Problem solved.
Reporter | ||
Comment 15•20 years ago
|
||
I agree my argument is silly, now I understand more about what mozilla is doing and what IE is (or is not) doing it is more clear. sorry to everyone on the CC list for this bug's continued discussions. the fact remains that I think that it would be good if XHTML supported innerHTML but it has been proven that *I* really don't need it. But maybe someone finding this bug will also really need it and can vote for it, or bring it up again.
Comment 16•20 years ago
|
||
Alex, you want bug 155723.
Reporter | ||
Comment 17•20 years ago
|
||
repoened so I can close it as a dupe I really apologies for everyones wasted time on this. if it makes you feel better I learned some stuff and learned the bug that I should be following. I thought the XSLT was the cause but obviously not. *** This bug has been marked as a duplicate of 155723 ***
Status: UNCONFIRMED → RESOLVED
Closed: 20 years ago → 20 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•