mirror of
https://github.com/ariya/phantomjs.git
synced 2024-10-26 06:17:33 +03:00
132 lines
3.8 KiB
CoffeeScript
132 lines
3.8 KiB
CoffeeScript
# The purpose of this is to show how and when events fire, considering 5 steps
|
|
# happening as follows:
|
|
#
|
|
# 1. Load URL
|
|
# 2. Load same URL, but adding an internal FRAGMENT to it
|
|
# 3. Click on an internal Link, that points to another internal FRAGMENT
|
|
# 4. Click on an external Link, that will send the page somewhere else
|
|
# 5. Close page
|
|
#
|
|
# Take particular care when going through the output, to understand when
|
|
# things happen (and in which order). Particularly, notice what DOESN'T
|
|
# happen during step 3.
|
|
#
|
|
# If invoked with "-v" it will print out the Page Resources as they are
|
|
# Requested and Received.
|
|
#
|
|
# NOTE.1: The "onConsoleMessage/onAlert/onPrompt/onConfirm" events are
|
|
# registered but not used here. This is left for you to have fun with.
|
|
# NOTE.2: This script is not here to teach you ANY JavaScript. It's aweful!
|
|
# NOTE.3: Main audience for this are people new to PhantomJS.
|
|
printArgs = ->
|
|
i = undefined
|
|
ilen = undefined
|
|
i = 0
|
|
ilen = arguments_.length
|
|
|
|
while i < ilen
|
|
console.log " arguments[" + i + "] = " + JSON.stringify(arguments_[i])
|
|
++i
|
|
console.log ""
|
|
sys = require("system")
|
|
page = require("webpage").create()
|
|
logResources = false
|
|
step1url = "http://en.wikipedia.org/wiki/DOM_events"
|
|
step2url = "http://en.wikipedia.org/wiki/DOM_events#Event_flow"
|
|
logResources = true if sys.args.length > 1 and sys.args[1] is "-v"
|
|
|
|
#//////////////////////////////////////////////////////////////////////////////
|
|
page.onInitialized = ->
|
|
console.log "page.onInitialized"
|
|
printArgs.apply this, arguments_
|
|
|
|
page.onLoadStarted = ->
|
|
console.log "page.onLoadStarted"
|
|
printArgs.apply this, arguments_
|
|
|
|
page.onLoadFinished = ->
|
|
console.log "page.onLoadFinished"
|
|
printArgs.apply this, arguments_
|
|
|
|
page.onUrlChanged = ->
|
|
console.log "page.onUrlChanged"
|
|
printArgs.apply this, arguments_
|
|
|
|
page.onNavigationRequested = ->
|
|
console.log "page.onNavigationRequested"
|
|
printArgs.apply this, arguments_
|
|
|
|
if logResources is true
|
|
page.onResourceRequested = ->
|
|
console.log "page.onResourceRequested"
|
|
printArgs.apply this, arguments_
|
|
|
|
page.onResourceReceived = ->
|
|
console.log "page.onResourceReceived"
|
|
printArgs.apply this, arguments_
|
|
page.onClosing = ->
|
|
console.log "page.onClosing"
|
|
printArgs.apply this, arguments_
|
|
|
|
|
|
# window.console.log(msg);
|
|
page.onConsoleMessage = ->
|
|
console.log "page.onConsoleMessage"
|
|
printArgs.apply this, arguments_
|
|
|
|
|
|
# window.alert(msg);
|
|
page.onAlert = ->
|
|
console.log "page.onAlert"
|
|
printArgs.apply this, arguments_
|
|
|
|
|
|
# var confirmed = window.confirm(msg);
|
|
page.onConfirm = ->
|
|
console.log "page.onConfirm"
|
|
printArgs.apply this, arguments_
|
|
|
|
|
|
# var user_value = window.prompt(msg, default_value);
|
|
page.onPrompt = ->
|
|
console.log "page.onPrompt"
|
|
printArgs.apply this, arguments_
|
|
|
|
|
|
#//////////////////////////////////////////////////////////////////////////////
|
|
setTimeout (->
|
|
console.log ""
|
|
console.log "### STEP 1: Load '" + step1url + "'"
|
|
page.open step1url
|
|
), 0
|
|
setTimeout (->
|
|
console.log ""
|
|
console.log "### STEP 2: Load '" + step2url + "' (load same URL plus FRAGMENT)"
|
|
page.open step2url
|
|
), 5000
|
|
setTimeout (->
|
|
console.log ""
|
|
console.log "### STEP 3: Click on page internal link (aka FRAGMENT)"
|
|
page.evaluate ->
|
|
ev = document.createEvent("MouseEvents")
|
|
ev.initEvent "click", true, true
|
|
document.querySelector("a[href='#Event_object']").dispatchEvent ev
|
|
|
|
), 10000
|
|
setTimeout (->
|
|
console.log ""
|
|
console.log "### STEP 4: Click on page external link"
|
|
page.evaluate ->
|
|
ev = document.createEvent("MouseEvents")
|
|
ev.initEvent "click", true, true
|
|
document.querySelector("a[title='JavaScript']").dispatchEvent ev
|
|
|
|
), 15000
|
|
setTimeout (->
|
|
console.log ""
|
|
console.log "### STEP 5: Close page and shutdown (with a delay)"
|
|
page.close()
|
|
setTimeout (->
|
|
phantom.exit()
|
|
), 100
|
|
), 20000 |