点击后新窗口无法获取值 [window.opener.]

4

我正在尝试在单击时打开一个新窗口,并将当前索引值发送到新窗口。

以下是我的HTML代码,我希望在单击时更改该值,默认值为1

<input type="text" id='pageno' value="1">

以下是我的jQuery代码。

$('.page-list li').click(function() {
    var pageIndex = $(this).index() + 1;
    var URL = window.location.href;
    var myWindow = window.open(URL);
    myWindow.opener.document.getElementById('pageno').value = pageIndex;
});

1
使用 querystring 怎么样? - Prashanth Benny
1
@PrashanthBenny 如果我使用查询字符串,需要在新窗口中获取值。这是一个HTML页面,而不是PHP/ASP。 - Akhilendra
@Akhilendrayadav,你不需要PHP/ASP,可以使用window.location.search - seymar
听起来不错,请稍微解释一下。 - Akhilendra
1
或者location.hash,我会发布一个答案。 - seymar
1
@PrashanthBenny 的意思是你需要这样做 window.open(URL + '?index=' + pageIndex);。无论如何... 你的代码有两个问题。首先,myWindow.opener.document 应该改为 myWindow.document。其次,你需要在 onload 事件之后处理窗口(如果使用查询字符串则不需要)。 - GramThanos
2个回答

3

我不会像那样尝试访问其他窗口。 你可以将信息添加到URL中。 可以使用哈希#1或查询字符串?pageno=1。 既然你不想使用任何服务器端语言,我建议使用哈希,因为在JavaScript中更容易处理。

$('.page-list li').click(function() {
   var pageIndex = $(this).index() + 1;
   var URL = window.location.href + '#' + pageIndex;
   var myWindow = window.open(URL);
});

那么在打开的窗口中,您可以获得页面编号:
var pageno = window.location.hash.substr(1);

0
window.location = "YOUR_URL?pageIndex="+pageIndex

and on newly opened window write below code in onload() method 

function onload(){
 var pageIndex = getParameterByName('pageIndex');
 document.getElementById('pageno').value = pageIndex;
}

function getParameterByName(name, url) {
    if (!url) {
      url = window.location.href;
    }
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
} 

两个答案都会在当前窗口上添加PageIndex(www.site_name.com/?pageIndex=3),新窗口打开为www.site_name.com/。 - Akhilendra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接