The script overwrites document.write in order to serialize all rendering
authorKai Moritz <kai@coolibri.de>
Tue, 26 Feb 2013 12:58:33 +0000 (13:58 +0100)
committerKai Moritz <kai@coolibri.de>
Tue, 26 Feb 2013 12:58:33 +0000 (13:58 +0100)
commit56aef196f70f2949706ac865e1e19395e7549b7e
tree144067b38a4b7efa2a5e5d4aff401684e4dc8fd4
parentb8397395da614ad3cb031d54f285ad6441dcf748
The script overwrites document.write in order to serialize all rendering

The first version of openx.js had sometimes freezed the IE 8. The cause of
this probably was a race-condition while moving the nodes with the banner
to their final destination.

Because of that, the script serializes all modifications of the DOM
strictly now. Implementation-Details:
 * The HTML delivered by OpenX is parsed, in order to detect included
   script-tags.
 * HTML-code is written to the destination-node directly.
 * script-tags, that load additional code are loaded via a script-node,
   that is appended to the end of the page. The script waits, until the
   additional code is loaded, by adding an onload-event to the appended
   script-node.
 * script-tags with inline-code are executed directly via eval().
 * Calls to document.write() in the additional scripts are catched. To
   achieve that, openx.js overwrites document.write with its own
   implementation, that simply adds the code to an execution-queue, that
   is processed, when the onload-event fires or when the eval()-call
   returns.

TODO:
 * Not tested with IE!
openx.js