window.open无效参数错误

时间:2011-06-06 17:41:19

标签: javascript

每当我尝试运行此脚本时,我都会收到无效的参数错误。错误发生在window.open(url, name, features);不幸的是我不知道如何解决这个问题。有什么想法吗?

Common-Utilities.js(问题来自 - 第4行)

var wm = new function WindowManager() {
    this.open = function (url, features) {
        var name = this.getName(url);
        var handle = window.open(url, name, features);
        handle.focus();
        return handle;
    };
    this.getName = function (url) {
        name = getAbsolutePath(url);
        return name.replace(/[:.\+\/\?\&\=\#\%\-]/g, "_").toLowerCase();
    };
    var getAbsolutePath = function (url) {
        var a = document.createElement('a');
        a.href = url;
        return a.href;
    }
};

openPopUp.js

function openPopup(url, width, height) 
{   
    if (width == -1) width = 710;
    if (height == -1) height = 500;

    var left = (window.screen.availWidth - width) / 2;
    var top = (window.screen.availHeight - height) / 2;

    if (window.screenLeft>window.screen.availWidth)
    {
        left = left + window.screen.availWidth;
    }

    // open url in new browser window
    var handle = wm.open(url, 'location=0, menubar=0, resizable=1, scrollbars=1, status=0, toolbar=0, width=' + width + 'px, height=' + height + 'px, top=' + top + 'px , left=' + left + 'px');

    //tile the windows so user can tell a new window has been opened
    if (document.body.clientHeight==height)
    {   
        var metricTop=10;
        var metricLeft=10;
        var thisTop=self.screenTop+metricTop;
        var thisLeft=self.screenLeft+metricLeft;
        if (thisTop<0) thisTop=0;
        if (thisLeft<0) thisLeft=0;
        handle.moveTo(thisLeft, thisTop);
    }

}

function popOutOrIn(url, title, width, height, popOut) {
    if (width == -1) width = 710;
    if (height == -1) height = 500;

    if (popOut === 'True') {
        openPopup(url, width, height)
    }
    else {
        window.top.popUpRadWindow(url, title, width, height);
    }
}

2 个答案:

答案 0 :(得分:2)

name参数中没有空格,因此正则表达式需要\s

this.getName = function (url) {
    name = getAbsolutePath(url);
    return name.replace(/[:.\+\/\?\&\=\#\%\-\s]/g, "_").toLowerCase();
};

答案 1 :(得分:1)

我们有代码......这是修复:

 var handle = wm.open(url,'I want a name!', 'location=0, menubar=0, resizable=1, scrollbars=1, status=0, toolbar=0, width=' + width + 'px, height=' + height + 'px, top=' + top + 'px , left=' + left + 'px');