/** Initialize Yuu and call all registered hooks
*/
+ document.body.className += (navigator.standalone || gui)
+ ? " standalone" : " browser";
+
if (gui) {
var win = gui.Window.get();
var nativeMenuBar = new gui.Menu({ type: "menubar" });
wkdoc.hidden = false;
wkdoc.dispatchEvent(ev);
});
+ win.on('new-win-policy', function (frame, url, policy) {
+ if (url.startsWith('chrome'))
+ policy.forceNewPopup();
+ else
+ policy.forceDownload();
+ });
}
return new Promise(function (resolve) {
initOptions = options || {};
yuu.log("messages", "Initializing Yuu engine.");
var promises = [];
- yf.each(function (hook) {
- promises.push(hook.call(yuu, initOptions));
- }, initHooks);
+ // initHooks can be pushed to while iterating, so iterate
+ // by index, not a foreach loop.
+ for (var i = 0; i < initHooks.length; ++i)
+ promises.push(initHooks[i].call(yuu, initOptions));
initHooks = null; // Bust future registerInitHook calls.
yuu.log("messages", "Initialization hooks complete.");
if (gui) {