2009-06-08 12 views
6
  • Voglio eseguire alcuni Javascript sul mio server Java6, ad esempio utilizzando l'API javax.script, in particolare Rhino Script Engine. (Anche se un'altra soluzione sarebbe accettabile)
  • Il file di script viene creato & supportato da una terza parte, quindi non voglio scaricarlo e modificarlo nel caso in cui cambi nel tempo.
  • Lo script fa riferimento direttamente all'oggetto 'finestra' (e probabilmente all'oggetto 'documento' ecc.) Che Rhino non supporta al supporto .

Posso fare questo, e se sì, come?Posso creare un oggetto "finestra" per javascript in esecuzione nel motore di script di Rhino Java

risposta

6
var window = {} 
var document = {} 

... naturalmente, non faranno molto bene a meno che non vengano popolati con le proprietà a cui lo script sta tentando di accedere.

Non è possibile popolare solo con le API standard del browser, la maggior parte di esse non ha senso al di fuori del contesto del browser.

6

Gli oggetti finestra e documento sono forniti dai browser Web e non fanno parte di ECMAScript standard implementati da Rhino. Sono lì per consentire a uno script di accedere alla finestra del browser corrente e al documento HTML. L'oggetto documento è in realtà un'implementazione di W3C DOM.

Rhino è una pura implementazione di ECMAScript/JavaScript 1.7 e quindi non sa nulla di pagine HTML, finestre e browsers in generale. Si tratta di un linguaggio di scripting per uso generico, che per la maggior parte è incorporato in un browser Web e quindi di solito è possibile utilizzare gli oggetti globali forniti dal browser.

È possibile definire alcuni oggetti globalmente accessibili con i nomi "finestra" e "documento" che sono solo stub che non fanno nulla, ma lo script che si desidera eseguire utilizza probabilmente alcuni metodi e/o proprietà, quindi questo non ti aiuterà molto. Se si desidera eseguire uno script, che è stato scritto per l'esecuzione in un ambiente browser, è necessario fornire un ambiente simile a "browser".

Se ciò è possibile e ha senso in un contesto server è un'altra domanda ...

Problemi correlati