Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 每次单击时打开链接的新窗口_C#_Javascript_Html_Asp.net_Window.open - Fatal编程技术网

C# 每次单击时打开链接的新窗口

C# 每次单击时打开链接的新窗口,c#,javascript,html,asp.net,window.open,C#,Javascript,Html,Asp.net,Window.open,我有一个asp.net应用程序,其中包含一个链接,单击该链接可打开一个窗口 示例: 这个很好用。它会根据需要打开一个窗口。我想要的是应用程序打开窗口的次数与点击链接的次数相同,并且在一个单独的窗口中打开 第一次单击打开第一个窗口。 第二次单击将打开同一链接的第二个窗口。 第三次单击打开同一链接的第三个窗口 我想一个相同的链接最多打开5个窗口,每次点击一个窗口。如果可能,我将如何实现这一点?有一个包含链接和计数的列表。每次单击尝试在列表中查找链接时,增加计数。如果在列表中找不到该链接,只需将其添

我有一个asp.net应用程序,其中包含一个链接,单击该链接可打开一个窗口

示例:

这个很好用。它会根据需要打开一个窗口。我想要的是应用程序打开窗口的次数与点击链接的次数相同,并且在一个单独的窗口中打开

第一次单击打开第一个窗口。
第二次单击将打开同一链接的第二个窗口。
第三次单击打开同一链接的第三个窗口


我想一个相同的链接最多打开5个窗口,每次点击一个窗口。如果可能,我将如何实现这一点?

有一个包含链接和计数的列表。每次单击尝试在列表中查找链接时,增加计数。如果在列表中找不到该链接,只需将其添加到列表中,计数为1

    <a href="url" onclick="openWindow(url, name, parameters)">

    <script>
    var countLinkPair = [];

    function openWindow(url, name, parameters)
    {
        var flag = false;
        for (var i = 0; i < countLinkPair.length; i++) {
            var obj = countLinkPair[i];
            if (obj.link == url) {
                if (obj.count<=5) {
                    window.open(url, name, parameters);
                }
                obj.count++;
                flag = true;
                break;
            }
        }

        if (!flag) {
            countLinkPair.push({link:url, count:1});
        }
    }
    </script>

var countLinkPair=[];
函数openWindow(url、名称、参数)
{
var标志=假;
对于(var i=0;i如果(obj.count这并不难。无论如何,你必须跟踪窗口,以便在其中一个窗口关闭时更新计数

更简单的方法:轮询他们的状态(基于事件的跟踪是一场噩梦)


var openWindows={};
var openWindow=函数(url、名称、规格){
var count=openWindows[name]| | 0;
如果(计数小于5){
var w=window.open(url、名称+计数、规格);
var interval=setInterval(函数(){
如果(!w | | w.关闭){
间隔时间;
openWindows[name]=openWindows[name]-1;
console.log('关闭按钮'+name'的窗口);
}
}, 100);
openWindows[名称]=计数+1;
}
console.log('为按钮'+name'打开了一个窗口);
};
脚本基本上存储您提供的名称,将其更改为唯一(否则弹出窗口会重叠),并启动定时轮询,每100毫秒检查一次,当窗口对象不再存在或窗口关闭时停止。我添加了一些控制台垃圾邮件以使其更清晰


重要信息页面刷新后计数将无法继续。这是一个只能在服务器端安全处理的问题。

从可用性的角度来看,您为什么要这样做?我看不出有哪种情况用户不会对此感到不快。@Tim。这是客户端的要求。他们想限制使用c任何时候都可以打开。
<script>
var openWindows = {};
var openWindow = function (url, name, specs) {
    var count = openWindows[name] || 0;
    if (count < 5) {
        var w = window.open(url, name + count, specs);
        var interval = setInterval(function () {
            if(!w || w.closed){
                clearInterval(interval);
                openWindows[name] = openWindows[name] - 1;
                console.log('Closed a window for button ' + name);
            }
        }, 100);
        openWindows[name] = count + 1;
    }
    console.log('Opened a window for button ' + name);
};
</script>
<!-- Usage -->
<input id="btn" name="btn" type="button" onclick="openWindow('http://www.google.it', 'google', 'width=200,height=100');" />