diff options
author | Valerio Virgillito | 2012-03-08 13:57:28 -0800 |
---|---|---|
committer | Valerio Virgillito | 2012-03-08 13:57:28 -0800 |
commit | dac3dcdc74e60a1948a6d8d994fa7ef38a446b7c (patch) | |
tree | 7e601fda69b79b3c3baea7d35aae7b736d494532 /js/document/html-document.js | |
parent | 22a66cb6e243a3f1c867b62e3942fd2e828019d9 (diff) | |
parent | 5940b22e01de4fc36e5c5de5f3ed074f08fadb07 (diff) | |
download | ninja-dac3dcdc74e60a1948a6d8d994fa7ef38a446b7c.tar.gz |
Merge branch 'refs/heads/master' into montage-integration
Diffstat (limited to 'js/document/html-document.js')
-rwxr-xr-x | js/document/html-document.js | 75 |
1 files changed, 60 insertions, 15 deletions
diff --git a/js/document/html-document.js b/js/document/html-document.js index 1c5cec91..23b55e92 100755 --- a/js/document/html-document.js +++ b/js/document/html-document.js | |||
@@ -451,9 +451,12 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
451 | // | 451 | // |
452 | function ninjaUrlPrepend (url) { | 452 | function ninjaUrlPrepend (url) { |
453 | var docRootUrl = this.application.ninja.coreIoApi.rootUrl+escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]).replace(/\/\//gi, '/')); | 453 | var docRootUrl = this.application.ninja.coreIoApi.rootUrl+escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]).replace(/\/\//gi, '/')); |
454 | return '"'+docRootUrl+url.replace(/\"/gi, '')+'"'; | 454 | if (url.indexOf('data:image') !== -1) { |
455 | return url; | ||
456 | } else { | ||
457 | return '"'+docRootUrl+url.replace(/\"/gi, '')+'"'; | ||
458 | } | ||
455 | } | 459 | } |
456 | |||
457 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | 460 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
458 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | 461 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
459 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | 462 | //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// |
@@ -614,12 +617,9 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
614 | } | 617 | } |
615 | } | 618 | } |
616 | } | 619 | } |
617 | |||
618 | |||
619 | |||
620 | |||
621 | /* | 620 | /* |
622 | //TODO: Figure out cross-domain XHR issue, might need cloud to handle | 621 | |
622 | //TODO: Figure out cross-domain XHR issue, might need cloud to handle | ||
623 | var xhr = new XMLHttpRequest(); | 623 | var xhr = new XMLHttpRequest(); |
624 | xhr.open("GET", this._document.styleSheets[i].href, true); | 624 | xhr.open("GET", this._document.styleSheets[i].href, true); |
625 | xhr.send(); | 625 | xhr.send(); |
@@ -627,20 +627,24 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
627 | if (xhr.readyState === 4) { | 627 | if (xhr.readyState === 4) { |
628 | console.log(xhr); | 628 | console.log(xhr); |
629 | } | 629 | } |
630 | */ | ||
631 | //tag.innerHTML = xhr.responseText //xhr.response; | 630 | //tag.innerHTML = xhr.responseText //xhr.response; |
632 | tag.innerHTML = 'noRULEjustHACK{background: #000}' | 631 | */ |
633 | //Currently no external styles will load if unable to load via XHR request | 632 | //Temp rule so it's registered in the array |
634 | 633 | tag.innerHTML = 'noRULEjustHACK{background: #000}'; | |
635 | //Disabling external style sheets | 634 | //Disabling external style sheets |
636 | query = this._templateDocument.html.querySelectorAll(['link']); | 635 | query = this._templateDocument.html.querySelectorAll(['link']); |
637 | for (var k in query) { | 636 | for (var k in query) { |
638 | if (query[k].href === this._document.styleSheets[i].href) { | 637 | if (query[k].href === this._document.styleSheets[i].href) { |
638 | |||
639 | //TODO: Removed the temp insertion of the stylesheet | ||
640 | //because it wasn't the proper way to do it | ||
641 | //need to be handled via XHR with proxy in Cloud Sim | ||
642 | |||
639 | //Disabling style sheet to reload via inserting in style tag | 643 | //Disabling style sheet to reload via inserting in style tag |
640 | var tempCSS = query[k].cloneNode(true); | 644 | //var tempCSS = query[k].cloneNode(true); |
641 | tempCSS.setAttribute('data-ninja-template', 'true'); | 645 | //tempCSS.setAttribute('data-ninja-template', 'true'); |
642 | query[k].setAttribute('disabled', 'true'); | 646 | query[k].setAttribute('disabled', 'true'); |
643 | this.iframe.contentWindow.document.head.appendChild(tempCSS); | 647 | //this.iframe.contentWindow.document.head.appendChild(tempCSS); |
644 | //Inserting tag | 648 | //Inserting tag |
645 | this._templateDocument.head.insertBefore(tag, query[k]); | 649 | this._templateDocument.head.insertBefore(tag, query[k]); |
646 | } | 650 | } |
@@ -838,6 +842,9 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
838 | this.undoStack = this.application.ninja.undocontroller.undoQueue.slice(0); | 842 | this.undoStack = this.application.ninja.undocontroller.undoQueue.slice(0); |
839 | this.redoStack = this.application.ninja.undocontroller.redoQueue.slice(0); | 843 | this.redoStack = this.application.ninja.undocontroller.redoQueue.slice(0); |
840 | this.application.ninja.undocontroller.clearHistory();//clear history to give the next document a fresh start | 844 | this.application.ninja.undocontroller.clearHistory();//clear history to give the next document a fresh start |
845 | |||
846 | //pause videos on switching or closing the document, so that the browser does not keep downloading the media data | ||
847 | this.pauseVideos(); | ||
841 | } | 848 | } |
842 | }, | 849 | }, |
843 | 850 | ||
@@ -866,6 +873,44 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
866 | 873 | ||
867 | 874 | ||
868 | } | 875 | } |
869 | } | 876 | }, |
870 | //////////////////////////////////////////////////////////////////// | 877 | //////////////////////////////////////////////////////////////////// |
878 | /** | ||
879 | *pause videos on switching or closing the document, so that the browser does not keep downloading the media data | ||
880 | */ | ||
881 | pauseVideos:{ | ||
882 | value:function(){ | ||
883 | var videosArr = this.documentRoot.getElementsByTagName("video"), i=0; | ||
884 | for(i=0;i<videosArr.length;i++){ | ||
885 | if(!videosArr[i].paused){ | ||
886 | videosArr[i].pause(); | ||
887 | } | ||
888 | } | ||
889 | } | ||
890 | }, | ||
891 | |||
892 | /** | ||
893 | * remove the video src on closing the document, so that the browser does not keep downloading the media data, if the tag does not get garbage collected | ||
894 | *removeSrc : boolean to remove the src if the video... set only in the close document flow | ||
895 | */ | ||
896 | stopVideos:{ | ||
897 | value:function(){ | ||
898 | var videosArr = this.documentRoot.getElementsByTagName("video"), i=0; | ||
899 | for(i=0;i<videosArr.length;i++){ | ||
900 | videosArr[i].src = ""; | ||
901 | } | ||
902 | } | ||
903 | }, | ||
904 | pauseAndStopVideos:{ | ||
905 | value:function(){ | ||
906 | var videosArr = this.documentRoot.getElementsByTagName("video"), i=0; | ||
907 | for(i=0;i<videosArr.length;i++){ | ||
908 | if(!videosArr[i].paused){ | ||
909 | videosArr[i].pause(); | ||
910 | } | ||
911 | videosArr[i].src = ""; | ||
912 | } | ||
913 | } | ||
914 | } | ||
915 | //////////////////////////////////////////////////////////////////// | ||
871 | }); \ No newline at end of file | 916 | }); \ No newline at end of file |