JavaScript ve tarayıcı dışı öykünme - mümkün mü?

8 Cevap php

Ben sonuçlarında veri işleme sonra dışarı HTML ve javascript ayrıştırma (PHP ve cURL kullanarak), bir web sayfasını getiriliyor gerektirdiğini üzerinde çalışıyorum ve yeni bir proje var.

Site AJAX tarafından verileri almak için javascript kullanır Temelde ben bir tuğla duvara çarptı. Javascript bir tarayıcıda çalışan sürece Bu durumda, ilk veri alınamadı sayfasında görünmez.

Bunun için herhangi bir PHP kütüphaneler var mı? (Ben değil sanıyorum, ama yanlış olabilir.)

Tür amacı yendi - Ben gerçekten oldukça aksi takdirde bu ve Mozilla ve / veya IE çalışma zamanı kütüphaneleri kullanmak için bir uygulama oluşturmak zorunda zorunda kalıyorum, sunucu tabanlı bir çözüm olarak inşa edecek.

8 Cevap

İhtiyacınız olanlar:

  • bir JavaScript yorumlayıcısı
  • bir DOM Seviye 2 Çekirdek ve HTML uygulaması
  • Standart olmayan ancak yaygın kullanılan DOM uzantıları 500g
  • DOM Seviye 2 Style (aynı zamanda CSS tercüman ve düzen motoru demek olabilir) bir tutam
  • yoğurt kapları, yuvarlak uçlu makas ve yapışkan geri plastik

Eğer (sandboxing size yardımcı olmak için bir yetişkin-up almak unutmayın) ve bileşenleri monte sonra, ne var, bir web tarayıcısından esasen farksız olduğunu göreceksiniz.

JAVA sunucu üzerinde kabuk yapı parçası değildir. V8/SquirrelFish PHP dönüştürmek gerekir C + + kodudur.

PHP bir JS motoru taşıma büyük bir görev ve çıkan performans olasılıkla korkunç olacaktır. Kadar çok sayfa derinlemesine JS desteği gerektiren her şeyi yapmak, jQuery gibi iğrenç karmaşık kütüphanelerini kullanarak beri Hatta gerçekten, artık JavaScript neredeyse-çözüm ile uzak alınamıyor.

Ben PHP sadece bunu yapmak mümkün olacak sanmıyorum. Java / Rhino / HtmlUnit veya Mozilla gibi uygun bir web tarayıcısı bağlamak gerekecek. Barındırma ortamı size bu tür bir şey derlemek ve dağıtmak için gereken esnekliği vermezse, bir kabuk (tercihen VPS) ile daha iyi bir hosting kurulum taşımak zorundayız.

Bu özel kaplama bilinen sayfaları 'AJAX erişimi ile diğer bazı yol tatsızlık önleyebilirsiniz, bunu.

Eğer gerçek canlı web sayfalarını yürütmek istiyorsanız bu sayfalarda JavaScript Tarayıcı ortamında yetişmektedir nesneleri kullanmak mümkün olmasını bekliyoruz çünkü, one step further than Rhino gitmek gerekir. Rhino gibi bir sunucu tarafı JavaScript motoru bu nesneleri olmaz.

John Resig (jQuery yaratıcısı) birkaç yıl önce Env.js adlı bir proje başladı; bunun için, sizin aradığınız şey olabilir ama zor bir zaman web sayfaları çeşitli tutarlı sonuçlar elde gerekecek sanıyorum. İşte bu konuda yaptığı ilk blog yazısı:

http://ejohn.org/blog/bringing-the-browser-to-the-server/

Bazı benzer projeler o yazının yorumlarında adlandırılır.

Bir sunucu üzerinde böyle Rhino gibi bir JavaScript motoru çalıştırabilirsiniz.

İşte bir kaç alternatif var:

  • Rhino (Java tabanlı)
  • V8 (Chrome tarafından kullanılan, C + +)
  • SquirrelFish (C + +)

Bu JS çalıştırabilirsiniz ederken, ben ne yapmak en iyi yaklaşım olup olmadığından emin değilim. Eğer programın purprose belirtilen değil çünkü Ancak, bu konuda herhangi bir öneri sunamıyoruz.

Önceden burada sordu: headless internet browser?

Mozilla biz bu soru çok olsun. Iyi bir cevap yok. Ne istediğiniz bir tarayıcı, ama hiçbir ekran ile (ağ gibi, JavaScript, HTML ayrıştırma ve DOM en azından bildiğim kadarıyla) yapması gereken hemen hemen her şeyi uygulayan bir yazılım kütüphanesi.

Ben biliyorum yakın şey HTMLUnit (Java) 'dir.

Tüm bu cevaplar JavaScript öykünme php olasılığı yoktur, fakat JavaScript burada emülatörü yakın bir tam uyumlu açık kaynak php olduğu tahmin gibi görünüyor:

http://www.sitepoint.com/blogs/2006/01/19/j4p5-javascript-for-php5/

Env.js ile birlikte, tam bir sunucu tarafı js yürütme çözüme oldukça yakın alabilir.

Ben hayır Java söylediler biliyorum, ancak başvuru için size QT Jaambi ilginizi çekebilir. Onlar yo headless mode çalıştırmak Ucan webkit bir uygulama var.

Eğer rhino bir göz alabilir. Bu java kullanmak, bir PHP liman duymadım.

Eğer gerçek javascript çalıştırmak zorundadır?

Tbh Eğer aynı zamanda DOM ve pencere nesneleri olarak bir tarayıcı betik motoru ortamı yaratmak için olduğu gibi sadece bir JS motoru kullanarak daha sert bir zamanınız olacak. Eğer bir Windows sunucu üzerinde çalışıyorsa, o zaman oldukça kolay programlama DOM erişim ve dışarı geri içeriğini çekerek, web sayfası yükleme ve yürütmek için IE COM nesneleri kullanabilirsiniz. Sunucu Linux ve / veya Mozilla olmak gelince, ne yazık ki hiçbir deneyime sahip.

Ama gerçekten ne yapmaya çalışıyorsun?