Javascript弹出框不会弹出

时间:2011-10-14 06:42:49

标签: javascript popup window

我正在尝试通过javascript打开一个窗口,但它只是让人觉得无所事事。起初我以为它只是谷歌Chrome,但它在firefox和IE中也是如此。不确定我的问题是什么。 JSFiddle说“POST”,但我不确定。建议?

http://jsfiddle.net/uBwvx

function romantic()
{
    document.body.bgColor = "pink";
    document.body.style.color = "red";
    document.images[1].src = "rom_main.jpg";

    // Searched online to find a script to override some styles. 
    // For loop with adding styles to each anchor didn't work for some reason. Kept being overriden somehow.
    var styleElement = document.createElement("style");
    styleElement.type = "text/css";
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = "a { color: red }";
    } else {
      styleElement.appendChild(document.createTextNode("a { color: red; }"));
    }
    document.getElementsByTagName("head")[0].appendChild(styleElement);
}

function adventure()
{
    document.body.bgColor = "#CDAA7D";
    document.body.style.color = "#5C3317";
    document.images[1].src = "adv_main.jpg";

    var styleElement = document.createElement("style");
    styleElement.type = "text/css";
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = "a { color: #5C4033 }";
    } else {
      styleElement.appendChild(document.createTextNode("a { color: #5C4033; }"));
    }
    document.getElementsByTagName("head")[0].appendChild(styleElement);
}

function relax()
{
    document.body.bgColor = "#B2DFEE";
    document.body.style.color = "#00688B";
    document.images[1].src = "rel_main.jpg";

    var styleElement = document.createElement("style");
    styleElement.type = "text/css";
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = "a { color: #000080 }";
    } else {
      styleElement.appendChild(document.createTextNode("a { color: #000080; }"));
    }
    document.getElementsByTagName("head")[0].appendChild(styleElement);
}

function family()
{
    document.body.bgColor = "#F0E68C";
    document.body.style.color = "#FFA54F";
    document.images[1].src = "fam_main.jpg";

    var styleElement = document.createElement("style");
    styleElement.type = "text/css";
    if (styleElement.styleSheet) {
      styleElement.styleSheet.cssText = "a { color: #6B4226 }";
    } else {
      styleElement.appendChild(document.createTextNode("a { color: #6B4226; }"));
    }
    document.getElementsByTagName("head")[0].appendChild(styleElement);
}

function open()
{
    mywindow = window.open("http://www.javascript-coder.com", "mywindow", "location=1,status=1,scrollbars=1,  width=100,height=100");
    mywindow.moveTo(0, 0);

}

4 个答案:

答案 0 :(得分:1)

您的问题是您在“窗口”范围内定义了open。 JavaScript中定义的所有变量和函数都分配给window对象。以下具有相同的效果:

var myVar = 10;
window.myVar = 10;

这样做:

function open() { ... }
window.open = function() { ... }

所以你看,你的函数正在覆盖window.open并实际创建堆栈溢出。任何其他函数名称都应该有效,例如openWindow()

答案 1 :(得分:1)

老兄把你的功能名称更改为winopen:open是一个关键词IM SURE OF IT:

http://jsfiddle.net/uBwvx/11/

答案 2 :(得分:0)

我不确定这是否可以解决您的问题,但您在href中缺少哈希。

<a href="#" onclick="open()">Request A Brochure...</a>

而不是

<a href="" onclick="open()">Request A Brochure...</a>

运气

答案 3 :(得分:0)

您使用名为“open()”的函数。由于没有定义范围,因此将此函数放在“窗口”范围内(这意味着:您将覆盖标准的“window.open()”函数。

为你的功能命名,一切都应该有效;)