224 votos

Herramientas para copiar selectivamente HTML+CSS+JS de los sitios existentes

Como la mayoría de los desarrolladores web, me gustaría de vez en cuando a mirar a la fuente de los sitios web para ver cómo su margen de ganancia es construido. Herramientas como Firebug y Herramientas para Desarrolladores de Chrome hacen que sea fácil para inspeccionar el código, pero si quiero copiar un aislado de sección y jugar con ella a nivel local, sería un dolor para copiar todos los elementos individuales y sus asociados de css. Y, probablemente, sólo el trabajo tanto para guardar toda la fuente y cortar las ajenas código.

Sería grandioso si pudiera haga clic en un nodo de Firebug y tener una "Guardar HTML+CSS para este nodo" opción. ¿Una herramienta de este tipo existen? Es posible extender el Firebug o Herramientas para Desarrolladores de Chrome para añadir esta característica?

301voto

Konrad Dzwinel Puntos 10160

SnappySnippet

Por fin he encontrado algo de tiempo para crear esta herramienta. Puede instalar SnappySnippet desde Chrome Web Store. Permite el fácil HTML+CSS extracción de especificada (última inspección) nodo DOM. Además, usted puede enviar su código directamente a CodePen o jsFiddle. ¡A disfrutar!

SnappySnippet Chrome extension

Otras características

  • limpia HTML (extracción de atributos innecesarios, la fijación de la sangría)
  • optimiza CSS para hacerlo legible
  • totalmente configurable (todos los filtros se puede desactivar)
  • funciona con :before y :after pseudo elementos
  • interfaz de usuario agradable gracias a Bootstrap Y tv de interfaz de usuario de los proyectos

Código

SnappySnippet es de código abierto, y se puede encontrar el código en GitHub.

Aplicación

Ya he aprendido bastante mucho al hacer esto, he decidido compartir algunos de los problemas que yo he experimentado y mis soluciones para ellos, tal vez a alguien le resulte interesante.

Primer intento - getMatchedCSSRules

En primer lugar he intentado recuperar los originales de las reglas CSS (procedente de los archivos CSS en el sitio web). Bastante asombroso, este es muy sencillo gracias a window.getMatchedCSSRules, sin embargo, no salió bien. El problema era que estábamos tomando solo la parte de HTML y CSS selectores que fueron coincidentes en el contexto de todo el documento, no fueron coincidentes en el contexto de un fragmento de código HTML. Desde el análisis y la modificación de los selectores no parecía una buena idea, me dio hasta este intento.

Segundo intento - getComputedStyle

Entonces, he empezado a partir de algo que @CollectiveCognition sugirió - getComputedStyle. Sin embargo, yo realmente quería separar CSS formulario HTML en lugar de todos los estilos inline.

Problema 1 - la separación de HTML CSS

Aquí la solución no era muy hermosa, pero bastante sencillo. He asigna Identificadores a todos los nodos en el subárbol y utiliza el ID para crear las reglas CSS. Esto funcionó muy bien, sin embargo me enteré de que cada una de mis reglas CSS ha ~300 propiedades de decisiones de todo el CSS ilegible.

Problema 2 - la eliminación de las propiedades con valores por defecto

Resulta que getComputedStyle devuelve todas las posibles propiedades de CSS y valores calculados para determinado elemento. Algunos de ellos, donde vacíos, algunos tenían el navegador predeterminado de valores. Para eliminar los valores por defecto tenía que llegar a ellos desde el navegador (y cada marca tiene diferentes valores por defecto). La solución fue comparar los estilos de elemento procedente de la página web con el mismo elemento insertado en vacío de un iframe. La lógica aquí es que no hay hojas de estilo en vacío de un iframe para cada elemento he anexado había solamente navegador predeterminado estilos. De esta manera yo era capaz de deshacerse de la mayoría de las propiedades que eran insignificantes. La próxima cosa que me ha llamado la atención fue que las propiedades de haber abreviatura equivalente eran innecesariamente impreso (por ej. hubo border: solid black 1px y, a continuación, border-color: black;, border-width: 1px itd.).

Problema 3 - manteniendo únicamente la abreviatura propiedades

Para solucionar esto simplemente hemos creado una lista de las propiedades que han de taquigrafía equivalentes y filtrado de los resultados. Número de propiedades en cada regla fue significativamente menor después de esta operación, pero he encontrado que me alféizar de tener un montón de -webkit- prefijo propiedades que nunca he de escuchar (-webkit-app-region? -webkit-text-emphasis-position?).

Problema 4 - quitar el prefijo propiedades

Me preguntaba si debo seguir alguna de estas propiedades debido a que algunos de ellos parecía útil (-webkit-transform-origin, -webkit-perspective-origin etc.). No he averiguado cómo comprobar esto, sin embargo, y como yo sabía que la mayoría de las veces, estas propiedades son solo basura, me he decidido a eliminar a todos ellos. Siguiente problema que me ha llamado la atención fue que las mismas reglas CSS que se repiten una y otra (por ej. para cada <li>, con exactamente los mismos estilos, no era la misma regla en la salida de CSS creado).

Problema 5 - la combinación misma de reglas CSS

Esto era sólo una cuestión de comparar las reglas de uno con el otro y con la combinación de estos que tenían exactamente el mismo conjunto de propiedades y valores. Como resultado, en lugar de #LI_1{...}, #LI_2{...} llegué #LI_1, #LI_2 {...}. Desde que yo era feliz con el resultado, me mudé a HTML. Parecía un desastre, sobre todo porque outerHTML de la propiedad la mantiene con formato exactamente como fue devuelto desde el servidor.

Problema 6 - la limpieza y la fijación de la sangría de HTML

La única cosa código HTML tomado de outherHTML necesitaba era un simple código de volver a formatear. Ya que es algo disponibles en cada IDE yo estaba seguro de que no es una biblioteca de JavaScript que hace exactamente eso, y resulta que yo estaba en lo correcto (jquery-limpia). Lo que es más, tengo atributos innecesarios eliminación adicional (style, data-ng-repeat etc.).

Problema 7 - filtros de romper CSS

Ya que existe la posibilidad de que, en algunas circunstancias, los filtros mencionados anteriormente, se pueden romper CSS en el fragmento que he hecho todos ellos opcionales. Usted puede desactivar desde el menú de configuración.

41voto

Los navegadores Webkit (no estoy seguro acerca de FireBug) le permiten copiar el código HTML de un elemento fácilmente, por lo que es una parte del proceso de la forma.

Ejecutando este (en la consola de javascript) antes de copiar el código HTML para un elemento que se mueva toda la calculada estilos para el elemento primario, así como todos los elementos secundarios, en el estilo en línea atributo que estarán disponibles como parte del HTML.

var el = document.querySelector("#someid");
var els = el.getElementsByTagName("*");

for(var i = -1, l = els.length; ++i < l;){

    els[i].setAttribute("style", window.getComputedStyle(els[i]).cssText);

}

Se trata de un total de hack y vas a tener un montón de "basura" atributos css que vadear a través de, pero al menos debe obtener su comenzado.

23voto

Florentin Puntos 181

He creado esta herramienta años para el mismo propósito:
http://www.betterprogramming.com/htmlclipper.html

Le invitamos a usar y de mejorar.

22voto

qntmfred Puntos 10246

Originalmente esta pregunta estaba buscando un Chrome (o FireFox), la solución, pero me topé con esta característica de Internet Explorer developer tools. Bastante parecido a lo que estoy buscando (a excepción de la de javascript)

Element Source with Style

Resultado:

Element Source with Style result

20voto

Jitendra Vyas Puntos 28378

Esto puede hacerse mediante el Plugin Firebug, llamado libro de recuerdos

Usted puede comprobar Javascript opción en la configuración de

enter image description here

Edición:

Esto también puede ayudar a

Firequark es una extensión para Firebug para ayudar en el proceso de HTML de la Pantalla Raspado. Firequark automáticamente extractos de selector css para una sola o html múltiples nodo(s) de una página web utilizando Firebug (un desarrollo web plugin para Firefox). El selector css generado puede ser dado como una entrada a html pantalla raspadores como Scrapi a extracto de la información. Firequark es construido para dar rienda suelta a la potencia de css selector para el uso de html de la pantalla raspado.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X