Google 个性化主页类似,如何保存最后的布局三
Google 个性化主页类似,如何保存最后的布局三
var Drag = {
dragged:false,
ao:null,
tdiv:null,
dragStart:function(){
Drag.ao = event.srcElement;
if((Drag.ao.tagName == "TD")||(Drag.ao.tagName == "TR")){
Drag.ao = Drag.ao.offsetParent;
Drag.ao.style.zIndex = 100;
}else{
return;
}
Drag.dragged = true;
Drag.tdiv = document.createElement("div");
Drag.tdiv.innerHTML = Drag.ao.outerHTML;
Drag.ao.style.border = "1px dashed blue";
Drag.tdiv.style.display = "block";
Drag.tdiv.style.position = "absolute";
Drag.tdiv.style.filter = "alpha(opacity = 70)";
Drag.tdiv.style.cursor = "move";
Drag.tdiv.style.border = "1px solid #000000";
Drag.tdiv.style.width = Drag.ao.offsetWidth;
Drag.tdiv.style.height = Drag.ao.offsetHeight;
Drag.tdiv.style.top = Drag.getInfo(Drag.ao).top;
Drag.tdiv.style.left = Drag.getInfo(Drag.ao).left;
document.body.appendChild(Drag.tdiv);
Drag.lastX = event.clientX;
Drag.lastY = event.clientY;
Drag.lastLeft = Drag.tdiv.style.left;
Drag.lastTop = Drag.tdiv.style.top;
}// end function dragStart()
,
draging:function(){//重要:判断MOUSE的位置
if(!Drag.dragged||Drag.ao == null) return;
var tX = event.clientX;
var tY = event.clientY;
Drag.tdiv.style.left = parseInt(Drag.lastLeft)+tX-Drag.lastX;
Drag.tdiv.style.top = parseInt(Drag.lastTop)+tY-Drag.lastY;
for(var i = 0;i
if(tX >= parentCell.left &&
tX tY >= parentCell.top &&
tY var subTables = parentTable.cells[i].getElementsByTagName("table");
if(subTables.length == 0){
if(tX >= parentCell.left &&
tX tY >= parentCell.top &&
tY parentTable.cells[i].appendChild(Drag.ao);
}
break;
}
for(var j = 0; j
if(tX >= subTable.left &&
tX tY >= subTable.top &&
tY parentTable.cells[i].insertBefore(Drag.ao,subTables[j]);
break;
}else{
parentTable.cells[i].appendChild(Drag.ao);
}
}
}
}
}// end function draging
,
dragEnd:function(){
if(!Drag.dragged) return;
Drag.dragged = false;
Drag.mm = Drag.repos(150,15);
Drag.ao.style.borderWidth = "0px";
//Drag.ao.style.borderTop = "1px solid #3366cc";
Drag.tdiv.style.borderWidth = "0px";
Drag.ao.style.zIndex = 1;
//alert(Drag.ao.outerHTML);
Drag.saveLayout();
displaySaveLayout();
}// end function dragEnd()
,
saveLayout:function()
{ // 把当前布局的位置放到 Cookie 里,按过 "保存页面布局" 后,存到后台
for(var i = 0;i
for(var j = 0;j
// i_cell index of parentTable
// j_node index of parentTable.rows[0][i].childNodes
setCookie(subTables[j].id+"pos",i+"::"+j+"::"+subTables[j].id);
}
}
}// end function saveLayout()
,
initTablePos:function()
{
// 先从 Cookie 里得到值, 如果得不到再到 DB 中挑资料.
var _tablepos = new Array();
var _dragTableHtmlArray = new Array(); // 存放 drag table 里的 html 代码
var _cookies = new Array();
var _c = 0;
// 先把画面上的内容拿到 Javascript 然后重新布局
for(var i = 0;i
for(var j = 0;j
_cookies[_c] = getCookie(subTables[j].id+"pos");
_dragTableHtmlArray[subTables[j].id] = subTables[j].outerHTML;
_c++;
}
if (_cookies.toString().indexOf("::") != -1)
{
parentTable.cells[i].innerHTML = ""; // 清除画面上拖动 Table
}
}
_cookies.sort(); // sort 后按顺序加入 innerHTML
if (_cookies.toString().indexOf("::") != -1)
{
for (var _k = 0 ; _k <_cookies.length> {
if (_cookies[_k] != null)
{
_tablepos = _cookies[_k].split("::");
//alert(_tablepos);
if (typeof(_tablepos) == "object")
{
//alert(_dragTableHtmlArray[_tablepos[2]]);
parentTable.cells[_tablepos[0]].innerHTML += _dragTableHtmlArray[_tablepos[2]];
//parentTable.cells[_tablepos[0]].innerText += _dragTableHtmlArray[_tablepos[2]];
}
}
}
}
//_cookies.sort();
//alert(_cookies);
_dragTableHtmlArray = null;// release memoery
}// end function initDragTablePos()
,
getInfo:function(o){//取得坐标
var to = new Object();
to.left = to.right = to.top = to.bottom = 0;
var twidth = o.offsetWidth;
var theight = o.offsetHeight;
while(o != document.body){
to.left += o.offsetLeft;
to.top += o.offsetTop;
o = o.offsetParent;
}
to.right = to.left+twidth;
to.bottom = to.top+theight;
return to;
}// end function getInfo()
,
repos:function(aa,ab){
var f = Drag.tdiv.filters.alpha.opacity;
var tl = parseInt(Drag.getInfo(Drag.tdiv).left);
var tt = parseInt(Drag.getInfo(Drag.tdiv).top);
var kl = (tl-Drag.getInfo(Drag.ao).left)/ab;
var kt = (tt-Drag.getInfo(Drag.ao).top)/ab;
var kf = f/ab;
return setInterval(
function(){
if(ab clearInterval(Drag.mm);
Drag.tdiv.removeNode(true);
Drag.ao = null;
return;
}
ab--;
tl -= kl;
tt -= kt;
f -= kf;
Drag.tdiv.style.left = parseInt(tl)+"px";
Drag.tdiv.style.top = parseInt(tt)+"px";
Drag.tdiv.filters.alpha.opacity = f;
}// end 动画效果
,aa/ab)
}// end function repos()
,
inint:function(){//初始化
Drag.initTablePos();
for(var i = 0;i
for(var j = 0;j
subTables[j].rows[0].className = "dragTR";
subTables[j].rows[0].attachEvent("onmousedown",Drag.dragStart);
}
}
document.onmousemove = Drag.draging;
document.onmouseup = Drag.dragEnd;
}// end function inint()
}//end of Object Drag
Drag.inint();

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

目前,四款新 Pixel 智能手机预计将于今年秋季上市。回顾一下,据传该系列将在发布时推出 Pixel 9 和 Pixel 9 Pro。然而,Pixel 9 Pro 将成为 iPhone 16 Pro 的竞争对手,而不是 Pixel 8 Pro(目前)

谷歌在 Pixel 8 系列中引入了 DisplayPort 替代模式,并且在新推出的 Pixel 9 系列中也采用了该模式。虽然它主要是为了让您通过连接的屏幕镜像智能手机显示,但您也可以将其用于桌面

谷歌最近回应了有关 Pixel 9 系列 Tensor G4 性能的担忧。该公司表示,该 SoC 的设计初衷并不是为了超越基准。相反,该团队专注于使其在 Google 想要的领域表现良好。

如果考虑最新更新(v15.29.34.29 beta)的 APK 拆解,谷歌的人工智能助手 Gemini 将变得更加强大。据报道,这家科技巨头的新人工智能助手可能会获得一些新的扩展。这些扩展

从 Gemini 1.5 Pro 大语言模型 (LLM) 开始,Google AI 已开始为开发人员提供扩展上下文窗口和节省成本的功能。以前可通过等候名单获得完整的 200 万个代币上下文窗口

Pixel 9 系列即将发布,原定于 8 月 13 日发布。根据最近的传言,Pixel 9、Pixel 9 Pro 和 Pixel 9 Pro XL 将与 Pixel 8 和 Pixel 8 Pro(亚马逊售价 749 美元)一样,配备 128 GB 存储空间。

自从 Android Authority 展示谷歌隐藏在 Android 14 QPR3 Beta 2.1 中的新 Android 桌面模式以来,已经过去了几个月。紧随 Google 为 Pixel 8 和 Pixel 8 添加 DisplayPort Alt 模式支持之后

谷歌的 AI Test Kitchen 包括一套供用户使用的 AI 设计工具,现已向全球 100 多个国家的用户开放。此举标志着世界各地的许多人第一次能够使用 Imagen 3、Googl
