location 与 document.title的冲突

smallidea 2008-01-04 04:30:16
大家看下下面这段代码
<script language='javascript'>
var win
function expandingWindow(website,webName) {
// website 链接地址;webname 页面信息;
var heightspeed = 10;
var winheight = 200;

if(win) win.close();
win = window.open("","","left=80,top=20,width=200,height=1,scrollbars=yes");

for (sizeheight = 1; sizeheight < winheight; sizeheight += heightspeed)
{
win.resizeTo(winwidth, sizeheight);
}

win.location = website;
win.document.title = webName;
</script>

根据以上代码,我计划实现的效果是:窗口动态打开后,再为窗口定义一个地址,最后标题栏中显示指定的信息。但是“win.location = website;win.document.title = webName;”在一起时,document.title不起作用,显示的还是页面的连接地址。而“window.open(website,"","……”却又是可以的,大家看看是为什么?
...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2008-01-07
  • 打赏
  • 举报
回复
1.可能是原来的定时器没有清除,效果加倍了
2.看下面的解释
3.settimeout只执行一次,setinterval是连续执行

下面是改过的代码
var   win,ts=null,tst=null;
var heightspeed = 10;
var winheight = 300;
var winwidth=200;
var sizeheight=100;
function expandingWindow(website,webName) {
if(ts)
clearInterval(ts);
if(tst)
clearInterval(tst);
win = window.open("","","left=80,top=20,width=200,height=100,scrollbars=yes");
ts=setInterval("expand()",500);
win.location = website;
//win.document.title=webName;//这里直接设置的话有可能文档未装载完而出现错误,所以改为定时器来设置
tst=setInterval("setTitle('"+webName+"')",1000);
}
function setTitle(n)
{
if(win.document.readyState=="complete")
{
win.document.title=n;
}
}
function expand()
{
if(win)
{
sizeheight+=heightspeed;
win.resizeTo(winwidth,sizeheight);
if(sizeheight>winheight)
clearInterval(ts);
}
else
clearInterval(ts);
}
expandingWindow("top.htm","页面信息");
cloudgamer 2008-01-07
  • 打赏
  • 举报
回复
厉害
smallidea 2008-01-07
  • 打赏
  • 举报
回复
谢谢楼上大哥的回复,你的代码我运行了,但是出现了三个问题:
1、第一次打开窗口时可以缓慢的拉长,而到第二次时确非常快的拉长;
2、标题还是无法显示到标题栏上;
3、如果把setInterval换成为settimeout的话,窗口的动态效果就没有了;

再就是我看你给我评论,说我的代码有错误,还请详细的说一下。

我菜鸟一个,还请指点,呵呵~~
谢谢
Go 旅城通票 2008-01-07
  • 打赏
  • 举报
回复
不是bug

setTitle()和expand()要操作的对象是win,你关闭了win,win就为null,当然出错了.
之所以expand()没有提示错误,因为加了if(win)判断,setTitle()没有加

function setTitle(n)
{
if(win)//======加这里,如果你调用了win.close()
{
if(win.document.readyState=="complete")
{
win.document.title=n;
}
}
}
smallidea 2008-01-07
  • 打赏
  • 举报
回复
为了防止弹出过的窗口,我在你的代码中加入了if(win) win.close();
这样后,在不关闭弹出窗口的情况下,代码运行正常。可窗口一关闭,马上就显示了js错误:“没有权限”!
为“win.document.readyState=="complete")”所在行。


虽然错误显示了,但运行没有发现什么不正常。

而错误出现的原因是什么呢,是浏览器的bug、还是程序本身有问题?还望您还能继续指点一二。
Go 旅城通票 2008-01-04
  • 打赏
  • 举报
回复
代码一堆错误.

如果你想慢慢展开窗口的,建议用setTimeout或者setInterval

而且open的窗口是不不能小于100*100的,你高度为1没意义

参考下面的代码,title可以设置,你原来没设置是你代码错了还没执行到
var   win,ts;
var heightspeed = 10;
var winheight = 300;
var winwidth=200;
var sizeheight=100;
function expandingWindow(website,webName) {
// website 链接地址;webname 页面信息;
if(win) win.close();
win = window.open("","","left=80,top=20,width=200,height=100,scrollbars=yes");
ts=setInterval("expand()",500);
/*for (sizeheight= 1; sizeheight<winheight; sizeheight+=heightspeed)
{
win.resizeTo(winwidth, sizeheight);
}
*/
win.location = website;
win.document.title = webName;
}
function expand()
{
if(win)
{
sizeheight+=heightspeed;
win.resizeTo(winwidth,sizeheight);
if(sizeheight>winheight)
clearInterval(ts);
}
else
clearInterval(ts);
}
expandingWindow("test.htm","页面信息");
tantaiyizu 2008-01-04
  • 打赏
  • 举报
回复
win.document.title = webName;

---

win.document.getElementsByTagName("title")[0].innerText = webName;

87,916

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧