1

我正在尝试使用 Javascript 实现几件事。我有点菜鸟,所以请耐心等待。

首先,我使用此代码创建一个弹出窗口:

HTML:

<a href="JavaScript:newPopup('contact.html');"><img src="request.jpg"/></a>

JS:

var sPage;

    function newPopup(url) {
    popupWindow = window.open(
        url,'popUpWindow','height=400,width=800,left=10,top=10,resizable=no,scrollbars=no,toolbar=no,menubar=no,location=no,directories=no,status=no');
        var sPath=window.location.pathname;
        var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
        window.name = sPage;
}

这部分工作正常,但我接下来要做的是获取当前页面名称并将其放入“contact.html”中文本框的值中。

这是我在弹出页面上使用的代码来尝试这样做:

function add(text){
    var TheTextBox = document.getElementById("prodcode");
    TheTextBox.value = TheTextBox.value + window.name;
}

当它是我链接到的普通页面时,这似乎有效,但如果它是弹出窗口,它将不起作用。我也无法弄清楚如何从页面名称中删除扩展名。

我意识到可能有一百万种更好的方法可以做到这一点,但这对我来说似乎最有意义。我看过饼干,但我似乎无法弄清楚。

我知道我问了很多,但任何帮助将不胜感激。

谢谢。

4

1 回答 1

0

如果我对问题的理解正确,您可以在传递给newPopup函数的 URL 中将窗口名称作为查询参数传递,然后在 contact.html 页面中抓取它以将其放入框中。

例如,您的newPopup函数可以将查询参数添加到 url,如下所示:

function newPopup(url) {
    var sPath=window.location.pathname;
    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
    var windowName = sPage.split(".")[0];    
    popupWindow = window.open(url + '?window_name=' + windowName,'popUpWindow','height=400,width=800,left=10,top=10,resizable=no,scrollbars=no,toolbar=no,menubar=no,location=no,directories=no,status=no');
    window.name = windowName;
} 

然后,在您的 contact.html 文件中,在设置文本框的值时获取查询参数,使用这种逻辑:

function parseURLParams(name, locat) {
    var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(locat);
    if (results) {
        return results[1] || "";
    } else {
        return "";
    }
}
function add(text) {
    var TheTextBox = document.getElementById("prodcode");
    TheTextBox.value = TheTextBox.value + parseURLParams("window_name", window.location.href);
}

希望能帮助到你!

于 2013-05-10T18:27:23.853 回答