<!DOCTYPE html> <html> <head> <title>ONLYOFFICE Documents</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=IE8"/> <meta name="description" content="" /> <meta name="keywords" content="" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-touch-fullscreen" content="yes"> <style type="text/css"> html { height: 100%; } body { height: 100%; margin: 0; padding: 0; overflow: hidden; } #wrap { position:absolute; left:0; top:0; right:0; bottom:0; } </style> </head> <body> <div id="wrap"> <div id="placeholder"></div> </div> <script type="text/javascript" src="api.js"></script> <script> (function() { // Url parameters var urlParams = getUrlParams(), cfg = getEditorConfig(urlParams), doc = getDocumentData(urlParams); // Document Editor var docEditor = new DocsAPI.DocEditor('placeholder', { type: urlParams['type'], width: '100%', height: '100%', documentType: urlParams['doctype'] || 'text', document: doc, editorConfig: cfg, events: { onInternalMessage: onInternalMessage, onRequestClose: e => {return 0;} } }); // helpers function getUrlParams() { var e, a = /\+/g, // Regex for replacing addition symbol with a space r = /([^&=]+)=?([^&]*)/g, d = function (s) { return decodeURIComponent(s.replace(a, " ")); }, q = window.location.search.substring(1), urlParams = {}; while (e = r.exec(q)) urlParams[d(e[1])] = d(e[2]); return urlParams; } function getDocumentData(urlParams) { return { key: urlParams["key"], url: urlParams["url"] || '_offline_', title: urlParams["title"], fileType: urlParams["filetype"], vkey: urlParams["vkey"], permissions: { edit: true, download: true } }; } function getEditorConfig(urlParams) { return { customization : { goback: { url: "onlyoffice.com" } }, mode : urlParams["mode"] || 'edit', lang : urlParams["lang"] || 'en', user: { id: urlParams["userid"] || urlParams["username"] || 'uid-901', name: urlParams["username"] || 'Chuk.Gek' } }; } // Mobile version function isMobile(){ var prefixes = { ios: 'i(?:Pad|Phone|Pod)(?:.*)CPU(?: iPhone)? OS ', android: '(Android |HTC_|Silk/)', blackberry: 'BlackBerry(?:.*)Version\/', rimTablet: 'RIM Tablet OS ', webos: '(?:webOS|hpwOS)\/', bada: 'Bada\/' }, i, prefix, match; for (i in prefixes){ if (prefixes.hasOwnProperty(i)) { prefix = prefixes[i]; if (navigator.userAgent.match(new RegExp('(?:'+prefix+')([^\\s;]+)'))) return true; } } return false; } var fixSize = function() { var wrapEl = document.getElementById('wrap'); if (wrapEl){ wrapEl.style.height = screen.availHeight + 'px'; window.scrollTo(0, -1); wrapEl.style.height = window.innerHeight + 'px'; } }; var fixIpadLandscapeIos7 = function() { if (navigator.userAgent.match(/iPad;.*CPU.*OS 7_\d/i)) { var wrapEl = document.getElementById('wrap'); if (wrapEl){ wrapEl.style.position = "fixed"; wrapEl.style.bottom = 0; wrapEl.style.width = "100%"; } } }; function onInternalMessage(event) { let info = event.data; if ( info.type == 'goback' ) { if ( window.AscDesktopEditor ) { window.AscDesktopEditor.execCommand('go:folder', info.data.status); } } }; function onDocumentReady() { if ( window.AscDesktopEditor ) { window.AscDesktopEditor.execCommand('doc:onready', ''); } } if (isMobile()){ window.addEventListener('load', fixSize); window.addEventListener('resize', fixSize); fixIpadLandscapeIos7(); } })(); </script> </body> </html>