/ / jQuery .load () Problema XHTML - jquery, xhtml, load

jQuery .load () Problema XHTML - jquery, xhtml, load

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 № 1

Eu 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").