Initial commit
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
/**
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2021
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
(function(window, undefined){
|
||||
|
||||
window.Asc = window.Asc || {};
|
||||
window.Asc.plugin = {};
|
||||
|
||||
// ie channel
|
||||
window.Asc.plugin.ie_channel = null;
|
||||
window.Asc.plugin.ie_channel_check = function(e) {
|
||||
var uagent = navigator.userAgent.toLowerCase();
|
||||
if (uagent.indexOf("msie") > -1 || uagent.indexOf("trident") > -1)
|
||||
{
|
||||
if (e.ports && e.ports[0])
|
||||
this.ie_channel = e.ports[0];
|
||||
}
|
||||
};
|
||||
|
||||
window.Asc.plugin.tr_init = false;
|
||||
window.Asc.plugin.tr = function(val) { return val; }
|
||||
|
||||
window.Asc.scope = {};
|
||||
window.Asc.scope.prototype = {
|
||||
clear : function() {
|
||||
for (var i in window.Asc.scope)
|
||||
delete window.Asc.scope[i];
|
||||
}
|
||||
};
|
||||
|
||||
function extend(obj, plugin) {
|
||||
if (!obj || !("object" == typeof(obj) || "array" == typeof(obj)))
|
||||
return obj;
|
||||
|
||||
var dst = (plugin === undefined) ? {} : plugin;
|
||||
for (var prop in obj) {
|
||||
if (obj.hasOwnProperty(prop)) {
|
||||
dst[prop] = (obj[prop] && "object" === typeof obj[prop]) ? extend(obj[prop]) : obj[prop];
|
||||
}
|
||||
}
|
||||
return dst;
|
||||
}
|
||||
|
||||
window.onload = function()
|
||||
{
|
||||
if (!window.Asc || !window.Asc.plugin)
|
||||
return;
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open("get", "./config.json", true);
|
||||
xhr.responseType = "json";
|
||||
xhr.onload = function() {
|
||||
if (!window.Asc || !window.Asc.plugin)
|
||||
return;
|
||||
|
||||
if (xhr.status == 200 || (xhr.status == 0 && xhr.readyState == 4)) {
|
||||
var objConfig = xhr.response;
|
||||
if ((typeof objConfig) == "string")
|
||||
objConfig = JSON.parse(objConfig);
|
||||
|
||||
extend(objConfig, window.Asc.plugin);
|
||||
|
||||
var obj = {
|
||||
type : "initialize",
|
||||
guid : window.Asc.plugin.guid
|
||||
};
|
||||
|
||||
var _body = document.body;
|
||||
if (_body && true !== window.Asc.plugin.enableDrops) {
|
||||
_body.ondrop = function(e) {
|
||||
if (e && e.preventDefault)
|
||||
e.preventDefault();
|
||||
return false;
|
||||
};
|
||||
_body.ondragenter = function(e) {
|
||||
if (e && e.preventDefault)
|
||||
e.preventDefault();
|
||||
return false;
|
||||
};
|
||||
_body.ondragover = function(e) {
|
||||
if (e && e.preventDefault)
|
||||
e.preventDefault();
|
||||
if (e && e.dataTransfer)
|
||||
e.dataTransfer.dropEffect = "none";
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
// ie11 not support message from another domain
|
||||
window.Asc.plugin._initInternal = true;
|
||||
|
||||
window.parent.postMessage(JSON.stringify(obj), "*");
|
||||
}
|
||||
};
|
||||
xhr.send();
|
||||
};
|
||||
|
||||
window.Asc.supportOrigins = {};
|
||||
window.Asc.supportOrigins[window.origin] = true;
|
||||
|
||||
function onMessage(event) {
|
||||
if (!window.Asc || !window.Asc.plugin)
|
||||
return;
|
||||
|
||||
if (window.plugin_onMessage) {
|
||||
if (!window.Asc.supportOrigins[event.origin])
|
||||
return;
|
||||
window.plugin_onMessage(event);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!window.Asc.plugin._initInternal)
|
||||
return;
|
||||
|
||||
if (typeof(event.data) == "string") {
|
||||
var pluginData = {};
|
||||
try {
|
||||
pluginData = JSON.parse(event.data);
|
||||
}
|
||||
catch(err) {
|
||||
pluginData = {};
|
||||
}
|
||||
|
||||
if (pluginData.type == "plugin_init") {
|
||||
window.Asc.supportOrigins[event.origin] = true;
|
||||
window.Asc.plugin.ie_channel_check(event);
|
||||
eval(pluginData.data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (window.addEventListener)
|
||||
window.addEventListener("message", onMessage, false);
|
||||
else
|
||||
window.attachEvent("onmessage", onMessage);
|
||||
|
||||
window.onunload = function() {
|
||||
if (window.addEventListener)
|
||||
window.removeEventListener("message", onMessage, false);
|
||||
else
|
||||
window.detachEvent("onmessage", onMessage);
|
||||
};
|
||||
})(window, undefined);
|
||||
Reference in New Issue
Block a user