查询DOM元素的值
/*
* Browser example snippet: query DOM node value
*
* For a list of all SWT example snippets see
* http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
*/
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Snippet160 {
public static void main ( String [] args ) {
final String html = "<html><title>Snippet</title><body><p id='myid'>Best Friends</p><p id='myid2'>Cat and Dog</p></body></html>" ;
Display display = new Display () ;
final Shell shell = new Shell ( display ) ;
shell.setLayout ( new FillLayout ()) ;
final Browser browser = new Browser ( shell, SWT.NONE ) ;
browser.addStatusTextListener ( new StatusTextListener () {
public void changed ( StatusTextEvent event ) {
browser.setData ( "query" , event.text ) ;
}
}) ;
browser.addProgressListener ( new ProgressListener () {
public void changed ( ProgressEvent event ) {
}
public void completed ( ProgressEvent event ) {
/*
* Use JavaScript to query the desired node content through the
* Document Object Model
*
* Assign result to the window property status to pass the
* result to the StatusTextListener This trick is required since
* <code>execute</code> does not return the <code>String</code>
* directly.
*/
boolean result = browser
.execute ( "window.status=document.getElementById('myid').childNodes[0].nodeValue;" ) ;
if ( !result ) {
/*
* Script may fail or may not be supported on certain
* platforms.
*/
System.out.println ( "Script was not executed." ) ;
return ;
}
String value = ( String ) browser.getData ( "query" ) ;
System.out.println ( "Node value: " + value ) ;
}
}) ;
/* Load an HTML document */
browser.setText ( html ) ;
shell.open () ;
while ( !shell.isDisposed ()) {
if ( !display.readAndDispatch ())
display.sleep () ;
}
display.dispose () ;
}
}
* Browser example snippet: query DOM node value
*
* For a list of all SWT example snippets see
* http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
*/
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Snippet160 {
public static void main ( String [] args ) {
final String html = "<html><title>Snippet</title><body><p id='myid'>Best Friends</p><p id='myid2'>Cat and Dog</p></body></html>" ;
Display display = new Display () ;
final Shell shell = new Shell ( display ) ;
shell.setLayout ( new FillLayout ()) ;
final Browser browser = new Browser ( shell, SWT.NONE ) ;
browser.addStatusTextListener ( new StatusTextListener () {
public void changed ( StatusTextEvent event ) {
browser.setData ( "query" , event.text ) ;
}
}) ;
browser.addProgressListener ( new ProgressListener () {
public void changed ( ProgressEvent event ) {
}
public void completed ( ProgressEvent event ) {
/*
* Use JavaScript to query the desired node content through the
* Document Object Model
*
* Assign result to the window property status to pass the
* result to the StatusTextListener This trick is required since
* <code>execute</code> does not return the <code>String</code>
* directly.
*/
boolean result = browser
.execute ( "window.status=document.getElementById('myid').childNodes[0].nodeValue;" ) ;
if ( !result ) {
/*
* Script may fail or may not be supported on certain
* platforms.
*/
System.out.println ( "Script was not executed." ) ;
return ;
}
String value = ( String ) browser.getData ( "query" ) ;
System.out.println ( "Node value: " + value ) ;
}
}) ;
/* Load an HTML document */
browser.setText ( html ) ;
shell.open () ;
while ( !shell.isDisposed ()) {
if ( !display.readAndDispatch ())
display.sleep () ;
}
display.dispose () ;
}
}