【问题标题】:How do I close a just opened window with JQuery by click?如何通过单击关闭带有 JQuery 的刚刚打开的窗口?
【发布时间】:2014-04-05 11:38:11
【问题描述】:

我现在可以在新的弹出窗口中以原始大小打开图片,但我希望能够通过单击将其关闭。我是这样打开的:

function bigger(service)    {       
    var image = window.open(service, 'image', 'width=510,height=470,menubar=0,scrollbars=0,titlebar=0,left=200,toolbar=0,top=200,resizable=0');
};

用这个点击事件激活功能:

$("#services div img").click(function() {
    bigger($(this).attr('src'));
});

这部分工作完美。但现在我试图通过单击窗口上的任意位置来关闭窗口。这是我尝试过的事情的变体:

$(image).click(function()   {
    $(image).close();
});

这给了我错误:Uncaught ReferenceError: image is not defined

现在这最后一点是我真的不知道该怎么做,我环顾四周并尝试了一些变化,但我似乎无法做到正确,所以这就是我求助于你的原因:我该怎么做点击关闭这个打开的窗口?

【问题讨论】:

  • 我认为范围有问题?如果不是,请分享完整代码。
  • 没有更多的代码,只有不相关的编码。我基本上将新窗口命名为“图像”,但它未定义,然后我看到有人将其定义为变量(var image = ...)但也没有做任何事情。

标签: jquery window.open


【解决方案1】:

可以这样做:

DEMO jsFiddle

function bigger(service) {
    var image = window.open("", 'image', 'width=510,height=470,menubar=0,scrollbars=0,titlebar=0,left=200,toolbar=0,top=200,resizable=0');
    $(image.document.body).append('<img style="width:100%" src="' + service + '">').on('click', function(){
        image.close();
    });
}

【讨论】:

  • A. Wolff 我非常喜欢它,它非常接近工作:现在可以通过单击它来关闭窗口,虽然图像不会以这种方式显示,你知道为什么它不会吗? (我乱七八糟地复制粘贴了你的代码)
  • @RobvandenBogaert 你的意思是弹出窗口不显示图像?如果是的话,你有没有机会在网上复制问题?你不是使用相对路径吗?
  • ps。在您的 jsFiddle 演示中,它运行良好,但在我的情况下,图像不显示。
  • 我会上传它并发布链接。抱歉,我刚刚发布的错误是因为我更改了一些内容以进行尝试,如果您刚刚阅读,请忘记错误;)
  • 你使用的是var image = window.open("",...)而不是var image = window.open(service,...),对吧?!
【解决方案2】:
function bigger(service)    {       
    var image = window.open(service, 'image', 'width=510,height=470,menubar=0,scrollbars=0,titlebar=0,left=200,toolbar=0,top=200,resizable=0');
};

这将image 变量的范围限制为函数本身(demo,请参阅控制台以了解错误)。

所以,也许,你需要这样做:

var image;
function bigger(service)    {       
    image = window.open(service, 'image', 'width=510,height=470,menubar=0,scrollbars=0,titlebar=0,left=200,toolbar=0,top=200,resizable=0');
};

【讨论】:

  • 我只是想到了确实,它消除了错误但我似乎仍然无法通过单击窗口$(image).click(function(){$(image).close();});来激活关闭功能
  • @RobvandenBogaert 但它对我有用(demo,点击链接)。
  • 打开然后关闭窗口在这里似乎真的不起作用。它与新窗口没有附加到 js 文件有什么关系,或者这只是我的一个奇怪的东西?另外,我将变量“图像”分配给 window.open 事件,这实际上使变量“图像”成为窗口本身吗?我想我在这里有点困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多