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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











현재 올 가을에는 4개의 새로운 Pixel 스마트폰이 출시될 것으로 예상됩니다. 요약하자면, 이 시리즈에는 출시 시 Pixel 9와 Pixel 9 Pro가 탑재될 것이라는 소문이 있습니다. 그러나 Pixel 9 Pro는 Pixel 8 Pro가 아닌 iPhone 16 Pro의 경쟁자가 될 것입니다.

Google은 Pixel 8 시리즈에 DisplayPort 대체 모드를 도입했으며 새로 출시된 Pixel 9 라인업에 포함되어 있습니다. 주로 연결된 화면으로 스마트폰 디스플레이를 미러링할 수 있도록 하기 위해 존재하지만 데스크탑에서도 사용할 수 있습니다.

Google AI는 Gemini 1.5 Pro LLM(대형 언어 모델)부터 개발자에게 확장된 컨텍스트 창과 비용 절감 기능에 대한 액세스를 제공하기 시작했습니다. 이전에는 대기자 명단을 통해 제공되었으며 전체 200만 개의 토큰 컨텍스트 창

Google은 최근 Pixel 9 라인의 Tensor G4에 대한 성능 문제에 대응했습니다. 회사는 SoC가 벤치마크를 이길 수 있도록 설계되지 않았다고 말했습니다. 대신 팀은 Google이 C를 원하는 영역에서 좋은 성능을 발휘하도록 집중했습니다.

최신 업데이트(v15.29.34.29 베타)의 APK 분해를 고려하면 Google의 AI 비서인 Gemini가 더욱 강력해질 예정입니다. 거대 기술 기업의 새로운 AI 비서는 몇 가지 새로운 확장 기능을 얻을 수 있는 것으로 알려졌습니다. 이러한 확장 기능은

Pixel 9 시리즈는 8월 13일 출시로 예정되어 거의 다가왔습니다. 최근 소문에 따르면 Pixel 9, Pixel 9 Pro 및 Pixel 9 Pro XL은 128GB의 스토리지부터 시작하여 Pixel 8 및 Pixel 8 Pro(Amazon에서 현재 $749)를 미러링할 예정입니다.

Android Authority가 Google이 Android 14 QPR3 베타 2.1에 숨겨둔 새로운 Android 데스크톱 모드를 시연한 지 몇 달이 지났습니다. Pixel 8 및 Pixel 8에 대한 DisplayPort Alt 모드 지원을 추가하는 Google의 뒤를 이어 뜨거워졌습니다.

Pixel 9 시리즈와 관련된 더 많은 홍보 자료가 온라인에 유출되었습니다. 참고로 새로운 유출은 91mobiles가 Pixel Buds Pro 2와 Pixel Watch 3 또는 Pixel Watch 3 XL을 선보인 여러 이미지를 공유한 직후에 발생했습니다. 이 시간
