Эмуляция небраузера JavaScript - действительно ли это возможно?

Вы попробовали старые сборки, но являетесь там основаниями, которые Вы не можете продолжать идти далее назад в истории репозитория и видеть точно, когда ошибка была представлена?

Иначе, я предложил бы добавить простое журналирование некоторого вида, чтобы помочь разыскать проблему, хотя я в замешательстве того, что конкретно Вы могли бы хотеть зарегистрировать.

, Если можно узнать то, что точно причина CAN эта проблема, через Google и документацию исключений Вы получаете, возможно, который даст дальнейшее понимание на том, что искать в коде.

9
задан Talvi Watia 20 November 2009 в 06:34
поделиться

8 ответов

Вам понадобится:

  • один интерпретатор JavaScript
  • одно ядро ​​DOM уровня 2 и реализация HTML
  • 500 г нестандартных, но часто используемых расширений DOM
  • щепотка стиля DOM уровня 2 (который может означать также интерпретатор CSS и механизм компоновки)
  • горшочки для йогурта, ножницы с закругленными краями и липкая пластмасса

После того, как вы соберете свои компоненты (не забудьте попросить взрослого помочь вам с песочницей), вы обнаружите, что то, что у вас есть, по сути неотличимо от сети браузер.

JAVA не является частью сборки оболочки на сервере. V8 / SquirrelFish - это код C ++, который мне нужно было бы преобразовать в PHP.

Перенос JS-движка на PHP был бы огромной задачей, и в результате производительность, вероятно, была бы ужасной. Вы можете' Мне даже больше не сойдет с рук почти решение на JavaScript, поскольку на многих страницах используются ужасно сложные библиотеки, такие как jQuery, для всего, что потребует всесторонней поддержки JS.

Я не думаю, что вы собираюсь сделать это исключительно на PHP. Вам нужно будет подключить Java / Rhino / HTMLUnit или подходящий веб-браузер, например Mozilla. Если ваша хостинговая среда не дает вам гибкости, необходимой для компиляции и развертывания подобных вещей, вам придется перейти на лучшую настройку хостинга с оболочкой (предпочтительно VPS).

Если вы можете избежать этой неприятности каким-либо другим способом, сделав это с помощью специального регистра AJAX-доступа к известным страницам.

что потребует всесторонней поддержки JS.

Я не думаю, что вы сможете сделать это только на PHP. Вам нужно будет подключить Java / Rhino / HTMLUnit или подходящий веб-браузер, например Mozilla. Если ваша хостинговая среда не дает вам гибкости, необходимой для компиляции и развертывания подобных вещей, вам придется перейти на лучшую настройку хостинга с оболочкой (предпочтительно VPS).

Если вы можете избежать этой неприятности каким-либо другим способом, сделав это с помощью специального регистра AJAX-доступа к известным страницам.

что потребует всесторонней поддержки JS.

Я не думаю, что вы сможете сделать это только на PHP. Вам нужно будет подключить Java / Rhino / HTMLUnit или подходящий веб-браузер, например Mozilla. Если ваша хостинговая среда не дает вам гибкости, необходимой для компиляции и развертывания подобных вещей, вам придется перейти на лучшую настройку хостинга с оболочкой (предпочтительно VPS).

Если вы можете избежать этой неприятности каким-то другим способом, сделав это с помощью специального регистра AJAX-доступа к известным страницам.

17
ответ дан 4 December 2019 в 07:35
поделиться

Ранее здесь задавали: Интернет-браузер без монитора?

В Mozilla нам часто задают этот вопрос. Нет хорошего ответа. Вам нужна программная библиотека, которая реализует практически все, что нужно браузеру (по крайней мере, в том, что касается работы в сети, JavaScript, синтаксического анализа HTML и DOM), но без отображения.

Самое близкое, что я знаю, это HTMLUnit (на Java).

3
ответ дан 4 December 2019 в 07:35
поделиться

Вам придется пойти на один шаг дальше, чем Rhino , если вы хотите запускать настоящие живые веб-страницы, потому что JavaScript на этих страницах будет ожидать, что сможет использовать объекты, которые присущи среде браузера. Серверный движок JavaScript, такой как Rhino, не будет иметь этих объектов.

Джон Ресиг (создатель jQuery) начал проект под названием Env.js пару лет назад; Возможно, это именно то, что вы ищете, но я подозреваю, что вам будет нелегко получить стабильные результаты с самых разных веб-страниц. Вот его первое сообщение в блоге об этом:

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

Некоторые похожие проекты названы в комментариях к этому сообщению.

4
ответ дан 4 December 2019 в 07:35
поделиться

Вы можете запустить на сервере движок JavaScript, например Rhino.

Вот несколько альтернатив:

  • Rhino (на основе Java)
  • V8 (Используется Chrome, C ++)
  • SquirrelFish (C ++)

Хотя они могут запускать JS, я не уверен, что то, что вы делаете, является лучшим подходом. Однако, поскольку вы не указали цель своей программы, я не могу предложить никаких предложений по этому поводу.

3
ответ дан 4 December 2019 в 07:35
поделиться

Я знаю, что вы сказали «нет Java», но для справки вас может заинтересовать QT Jaambi . У них есть реализация webkit, которую вы можете запустить в режиме без головы .

1
ответ дан 4 December 2019 в 07:35
поделиться

вы можете посмотреть в rhino . Он использует java, никогда не слышал о порте PHP.

Обязаны ли вы запускать настоящий javascript?

0
ответ дан 4 December 2019 в 07:35
поделиться

Вам будет труднее просто использовать JS-движок, так как вам также придется создать среду скриптового движка браузера, такую ​​как DOM и оконные объекты. Если вы работаете на сервере Windows, вы можете довольно легко использовать COM-объекты IE для загрузки и выполнения веб-страницы, получения доступа к DOM программным способом и извлечения содержимого обратно. Что касается вашего сервера Linux и / или Mozilla, у меня, к сожалению, нет опыта.

Но что вы действительно пытаетесь сделать?

0
ответ дан 4 December 2019 в 07:35
поделиться

Все эти ответы, кажется, предполагают, что нет возможности эмуляции php JavaScript, но есть почти полностью совместимый эмулятор php JavaScript с открытым исходным кодом здесь:

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

В сочетании с Env.js, вы можете получить довольно близкое к полному решению для выполнения js на стороне сервера.

1
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: