Estou tendo alguns problemas estranhos ao carregar conteúdode outra página XHTML via jQuery. Quando a segunda página da qual eu tento carregar é exibida como XHTML, recebo o erro abaixo. Eu não sei se isso ajuda, mas ambos os documentos são validados quando recebo o erro.
Erro não detectado: NO_MODIFICATION_ALLOWED_ERR: DOM Exceção 7
Atualmente, o cabeçalho na segunda página da qual eu carrego é:
<?xml version="1.0" encoding="iso-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="language" content="en" />
<title>some title</title>
<!-- CSS & Javascript included here -->
</head>
O tipo de conteúdo é definido como:
application / xhtml + xml; charset = iso-8859-1
Curiosamente, quando eu remover todas as coisas XHTML do cabeçalho e parar de definir o tipo de conteúdo, o erro não ocorre e tudo funciona muito bem.
O processo de carregamento atualmente se parece com o abaixo. Funciona bem quando tudo é HTML simples.
$("#overpage").find(".wrap").load(this.getTrigger().attr("href")+" #op").show();
Estou curioso porque o processo só não funcionaquando a segunda página da qual eu carrego é XHTML. Eu não quero servir a página como HTML simples e estou procurando conselhos sobre o que estou fazendo errado. Ambas as páginas validam e estou realmente coçando a cabeça aqui. Muito Obrigado!
Respostas:
3 para resposta № 1Eu acho que isso está relacionado ao fato de que document.write não funciona com o XHTML strict:
http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite
2 para resposta № 2
Eu encontrei o mesmo problema um pouco atrás, eu achoisso é causado porque jquery pega o (X) HTML que ele obtém, insere-o em uma div falsa, e só então roda o seletor (#op no seu caso) para recuperar a parte correta e inserir isso no lugar final. s o código jquery relevante (tirado de 1.5.1, mas 1.6 parece idêntico):
jQuery("<div>")
// inject the contents of the document in, removing the scripts
// to avoid any "Permission Denied" errors in IE
.append(responseText.replace(rscript, ""))
// Locate the specified elements
.find(selector)
No Firebug, eu posso ver que ele comete erros na linha .append, porque ele não grava um <?xml
ou <DOCTYPE
Cabeçalho dentro de um div ... Então eu acho que isso é apenas algo que jquery não suporta, não tenho certeza de como isso poderia ser corrigido de uma maneira sã.
1 para resposta № 3
XHTML não suporta document.write ou innerHTML. Devido ao fato de que o jQuery insere o novo código usando um desses métodos, todos os navegadores compatíveis com XHTML terão erros.
XHTML com application / xhtml + xml não suporta modificação bruta da fonte usando qualquer um destes métodos jQuery: append (), html (), insert ... (), etc.
Em vez disso, consulte alguns dados JSON e insira os valores recebidos em AJAX em tags predefinidas usando .text () / .val () ou crie dinamicamente esses nós usando document.createElement ("someTag").