2012-10-04 59 views

Respuesta

3

Michael [tm] Smith, el tipo que se ocupa del validador de HTML del W3C says here:

¡No es un error, es una advertencia. Y se emite porque el contenido se sirve como HTML en lugar de con un tipo XML MIME, y los analizadores HTML no saben nada sobre espacios de nombres, para ponerlo en términos XML , cada nombre de elemento es un nombre local - y así en HTML, el nombre literal de ese elemento es "g: plusone". Y ese nombre no puede ser representado en XML porque XML no permite dos puntos en los nombres locales . Entonces, el espíritu de la advertencia es decir, en caso de que alguna vez desee servir este contenido como XML en lugar de HTML, tiene un nombre de elemento que no está permitido en XML.

Habla del elemento g:plusone pero es el mismo problema.

Pero discrepo ligeramente. Los puntos son válidos en los nombres locales de elementos en XML 1.0. Solo están prohibidos en XML 1.0 + namespaces, por lo que el mensaje de advertencia definitivamente podría mejorarse.

ACTUALIZACIÓN: He ofrecido anteriormente una solución basada en document.write, pero como señala Jan M en los comentarios, IE tiene sus propias ideas sobre qué hacer con los elementos con dos puntos en los nombres de las etiquetas, por lo que no no trabajas allí En cambio, recomiendo seguir la respuesta de Jan.

+0

Gracias por el consejo: este truco funciona en Firefox pero en IE se niega a cargar la búsqueda cuadro –

18

que consideran que esta respuesta oculta en los documentos de Google:

https://developers.google.com/custom-search/docs/element#html5

etiquetas div HTML5 válidos

Puede utilizar etiquetas div HTML5 válidos, siempre y cuando siga las directrices siguientes:

  • El atributo de clase debe establecerse en gcse-XXX
  • Cualquier atributo debe ir precedido de datos-.

Por ejemplo:

<div class="gcse-searchbox" data-resultsUrl="http://www.example.com" data-newWindow="true" data-queryParameterName="search" > 
+0

excepto que este fragmento de código, que también encontré, no representa un cuadro de búsqueda en el validador html5 en un formulario asp.net C#. El uso del método top representa una advertencia de espacio de nombres no reconocido 'gcse'. –

+0

Bueno, me funciona, así que quizás tengas algo en tu C# que interfiere –

7

Siempre se puede utilizar en lugar de <div class="gcse-search"></div><gcse:search></gcse:search>, entonces el error desaparecerá del validador del W3C.

+0

Funciona como un amuleto en Chrome – den232

2

solución es muy simple, no utilizar directamente la etiqueta de búsqueda Google en la página html. Simplemente coloque un código de javascript simple para insertar etiqueta de búsqueda de google en html por innerhtml de javascript opción.

Aquí está el ejemplo:

<div id="gsearch"></div> 

<script> 
    var gcseDiv = document.getElementById('gsearch'); 
    gcseDiv.innerHTML = '<gcse:search></gcse:search>' 
</script> 

Después de esta línea se puede escribir o pegar el código de búsqueda Google que será igual que abajo

 <script> 
     (function() { 
       var cx = 'xxxxxxxxxxxxxxxxxxxxxxxxx:xxxxxxxxx'; 
       var gcse = document.createElement('script'); 
       gcse.type = 'text/javascript'; 
       gcse.async = true; 
       gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
        '//www.google.com/cse/cse.js?cx=' + cx; 
       var s = document.getElementsByTagName('script')[0]; 
       s.parentNode.insertBefore(gcse, s); 
       })(); 

     </script> 

Sugerencia: Sólo hay que poner el div por encima de y ambas secuencias de comandos en una div solo padre y administrar css para padres Div solamente.

1

Tal vez esto es demasiado simple, pero he trabajado en torno al problema, con solo colocar este en el interior y al final de la javascript:

document.write('<gcse:search><\/gcse:search>'); 

y se retira

Funciona en IE , Chrome, Firefox y Safari y valida.

+0

¿Estás seguro de eso con '' solo? Parece una línea demasiada. – Mogsdad

+0

document.write ('<\/gcse: search>'); – Doc

+0

Y eliminar Doc

0

Use el siguiente código si sólo desea visualizar el cuadro de búsqueda (sin el resultsbox) usando un DIV:

<div class="gcse-searchbox-only"></div> 
Cuestiones relacionadas