window.open и window.postMessage () решили обе проблемы, которые я описал выше.
Надеюсь, на скриншоте и в коде вы будете уверены, что полезность таблиц Google можно расширить для общего блага. В основе лежат два метода ввода, копирования и просмотра текстовых данных - электронная таблица для среза через набор данных и TBA для навигации по ассоциациям в Trail (ось x) и Branches (ось y), а также для работы над Аспекты (ось z) текущего выбора, которые требуют внимания в коллаборациях из разных интересов.
Так, например, медсестра посчитала бы, что TBA полезен для записи многих аспектов обследования пациента, тогда как фармацевт мог бы найти электронную таблицу более полезной для контроля запаса. Оба записывают свои данные в общем объекте, который я называю nset (иерархия именованных наборов), сохраненном в облаке и доступном для распространения в совместных действиях.
TBA также полезен для клонирования больших наборов записей. Например, одна комната с мебелью может быть воспроизведена на одном этаже, а затем эта комната с комнатами может быть воспроизведена для всей башни.
Возможность поддерживать параллельные объекты nset в нескольких окнах монитора с помощью postMessage означает непревзойденные возможности для отображения одних и тех же данных в различных формах мультимедиа, включая интерактивную анимацию, дополненную реальность, машинные инструкции ЧПУ, элементы управления IOT ...
Вот соответствующий код:
Из TBA в боковой панели:
window.addEventListener("message", receiveMessage, false);
function openMonitor(nset){
var params = [
'height=400',
'width=400'
].join(',');
let file = 'http://glasier.hk/blazer/model.html';
popup = window.open(file,'popup_window', params);
popup.moveTo(100,100);
}
var popup;
function receiveMessage(event) {
let ed,nb;
ed = event.data;
nb = typeof ed === "string"? ed : nb[0];
switch(nb){
case "Post":
console.log("Post");
popup.postMessage(["Refreshing nset",nset], "http:glasier.hk");
break;
}
}
function importNset(){
google.script.run
.withSuccessHandler(function (code) {
root = '1grsin';
trial = 'msm4r';
orig = 'ozs29';
code = orig;
path = "https://api.myjson.com/bins/"+code;
$.get(path)
.done((data, textStatus, jqXHR) => {
nset = data;
openMonitor(nset);
cfig = nset.cfig;
start();
})
})
.sendCode();
}
Из всплывающего окна:
$(document).ready(function(){
name = $(window).attr("name");
if(name === "workshop"){
tgt = opener.location.href;
}
else{
tgt = "https://n-rxnikgfd6bqtnglngjmbaz3j2p7cbcqce3dihry-0lu-script.googleusercontent.com"
}
$("#notice").html(tgt);
opener.postMessage("Post",tgt);
$(window).on("resize",function(){
location.reload();
})
})
}
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
let ed,nb;
ed = event.data;
nb = typeof ed === "string"? ed : ed[0];
switch(nb){
case "Post": popup.postMessage(["nset" +nset], "*"); break;
default :
src = event.origin;
notice = [ed[0]," from ",src ];
console.log(notice);
// $("#notice").html(notice).show();
nset = ed[1];
cfig = nset.cfig;
reloader(src);
}
}
Я должен объяснить, что html-часть боковой панели была построена на семинаре localhost, и все стили и сценарии скомпилированы в один файл для вставки в html-файл боковой панели. Мастерская также доступна онлайн . Цель Google предоставляется event.origin в postMessage. Это должно быть выдано любому желающему сделать разные мониторы. Сейчас я только что сделал монитор для 3D-моделирования с Three.js.
Я думаю, что после долгих исследований и допросов здесь, это должен быть правильный ответ.