Toon posts:

[js] "window.close is not a function"

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het maken van een popup, waarin men afbeeldingen kan uploaden, verwijderen,selecteren enz. om het vervolgens in ubb style in een textarea te dumpen.

Maar bij de functio Go() moet deze popup worden afgesloten, wat niet gebeurt. De foutmelding in firefox luidt "window.close is not a function" (ook met deze foutmelding kon ik niks vinden). De rest werk wel, maar hij wil alleen de popup niet sluiten. Ook blijft er in de statusbalk 'waiting for localhost' staan als ik een afbeelding heb geselecteerd.

Ik hoop dat iemand mij op weg kan helpen :)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<html>
<head>
<script language="JavaScript" type="text/javascript">

    var maxWidth = 145;

    function scaleImage(im) {

        if (typeof im.naturalWidth == 'undefined') im.naturalWidth = im.width;

        if (im.naturalWidth > maxWidth) {

            im.width = maxWidth;
            im.style.maxWidth = im.naturalWidth + 'px';

        }

    }

     
    function ShowImg() {
        img = document.imgform.image.value;
        url = 'images/'+img;
        
        if (img != '') {
            src = "[img]\""[/img]"; 
            document.getElementById('ShowImgField').innerHTML = src;
        } else {
            src = 'Selecteer, <br /> of upload<br />een afbeelding.';
            document.getElementById('ShowImgField').innerHTML = src;
        }
        
    }
    
    function ShowImgError() {
        src = 'Afbeelding <br />niet gevonden.';
        document.getElementById('ShowImgField').innerHTML = src;
    }
    
    function DelImage() {
        image = document.imgform.image.value; 
        if (image != '') {
            var agree=confirm("Afbeelding verwijderen?");
            if (agree) {
                
                location.replace("index.php?module=bbimage&delimage="+image);
            }
        }
    }
    
    function ReturnM(input) {
        
        var agt=navigator.userAgent.toLowerCase();
        var is_gecko = (agt.indexOf('gecko') != -1);
        var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
        
        open = input;
        close = '';
        formname = 'articleform';
        
        if (is_ie) {
        
            /* Microsoft Internet Explorer */
            
            selected = opener.document.selection.createRange().text;
            
            if (!selected) {        
                opener.document[formname].content.focus();
                opener.document.selection.createRange().duplicate().text = open + close;
                return;
            } else {
                opener.document[formname].content.focus();
                opener.document.selection.createRange().text = open + selected + close;
                return;
            }
        
        } else if(is_gecko) {
        
            /* Gecko based browser (Firefox) */
            
            var selLength = opener.document[formname].content.textLength;
            var selStart = opener.document[formname].content.selectionStart;
            var selEnd = opener.document[formname].content.selectionEnd;
            
            if (selEnd == 1 || selEnd == 2) selEnd = selLength;
    
            var s1 = (opener.document[formname].content.value).substring(0,selStart);
            var s2 = (opener.document[formname].content.value).substring(selStart, selEnd)
            var s3 = (opener.document[formname].content.value).substring(selEnd, selLength);
            opener.document[formname].content.value = s1 + open + s2 + close + s3; 

        } else {
        
            newtext = opener.document.articleform.elements['content'].value;
            opener.document.articleform.elements['content'].value = newtext+"\n\n"+input;
        
        }   

    }
    
    function Go() {
        
        var goimage = document.imgform.image.value; 
        
        if (goimage != '') {
        
            if (document.imgform.quoteimage.checked) {
                var quotetext = prompt("Voer de tekst in dat onder de afbeelding moet komen.", "");
                if (quotetext != null) {
                    ReturnM('[quoteimage='+goimage+']'+quotetext+'[/quoteimage]');
                }
            } else {
                ReturnM('[image='+goimage+']');
            }
            
            window.close();
            
        } 
        
    }
    
</script>

</head>
<body onload="ShowImg()">
<div id="ShowImgField"></div>
<form name="imgform" action="index.php?module=bbimage" enctype='multipart/form-data' method='POST'>
<select name='image' size='1' onChange='ShowImg();return false;'>
<option value="">Afbeeldingen....</option>
/// knip
</select>

<input style="width:75px;margin-top:6px;" type="button" value="Verwijder" onclick="DelImage();">

<p style="margin-top:5px;margin-bottom:-1px;">
    <b>Afbeelding:</b><br />
    <input type="file" name="imginput">
</p> 

<input type="checkbox" name="quoteimage" value="yes"> Maak quote afbeelding

<p style="margin-top:5px;margin-bottom:3px;">
    <input style="width: 73px" type="submit" value="Upload" name="submit">
</p>

<p style="margin-top:5px;margin-bottom:3px;">
    <input style="width: 42px" type="button" value="Oke" onClick="Go();">
    <input style="width: 75px" type="button" value="Sluiten" onClick="window.close();">
</p>

</form>

</body>
</html>

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
lees eerst eens de feedback bij onderstaande thread door

http://blogs.msdn.com/lis...ve/2004/09/17/231078.aspx

deze link staat op numero uno bij de volgende google zoekopdracht

[google=firefox window.close() is not a function]

[ Voor 26% gewijzigd door faabman op 28-12-2004 20:57 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
faabman schreef op dinsdag 28 december 2004 @ 20:56:
lees eerst eens de feedback bij onderstaande thread door

http://blogs.msdn.com/lis...ve/2004/09/17/231078.aspx

deze link staat op numero uno bij de volgende google zoekopdracht

[google=firefox window.close() is not a function]
in firefox, you need to turn on the "pref("dom.allow_scripts_to_close_windows", false);" option in (normally) C:\Program Files\Mozilla Firefox\greprefs\all.js
Hoe komt het dan dat onClick="window.close();" wel werkt in firefox?

[ Voor 9% gewijzigd door Verwijderd op 28-12-2004 22:45 ]


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
omdat de window.close() dan wordt aangeroepen door een door (direct) door de user getriggered event...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
faabman schreef op dinsdag 28 december 2004 @ 22:47:
omdat de window.close() dan wordt aangeroepen door een door (direct) door de user getriggered event...
Op die manier. Maar onClick="Go();window.close();" werkt ook niet :'( Is er niet toevallig een andere manier om dit te omzeilen?

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    function Go() {
        
        var goimage = document.imgform.image.value; 
        
        if (goimage != '') {
        
            if (document.imgform.quoteimage.checked) {
                var quotetext = prompt("Voer de tekst in dat onder de afbeelding moet komen.", "");
                if (quotetext != null) {
                    //ReturnM('[quoteimage='+goimage+']'+quotetext+'[/quoteimage]');
                }
            } else {
                //ReturnM('[image='+goimage+']');
            }
            
        } 
        
    }


Zonder de functie ReturnM wordt onClick="Go();window.close();" wel goed uitgevoerd. :/

[ Voor 12% gewijzigd door Verwijderd op 28-12-2004 23:19 ]


Verwijderd

Topicstarter
Vraag me niks, maar ik was bij een paar variable vergeten 'var' er voor te zetten, tot ik dat had verbeterd werkte alles in een keer. 8)7

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:15

crisp

Devver

Pixelated

scope my friend:
JavaScript:
1
2
         open = input;
         close = '';

hernoemen dus ;)

edit: lokaal maken door ze expliciet binnen de functie te declareren is inderdaad ook een oplossing (en ook netter), maar ik zou sowieso geen namen gebruiken van top-level methods - zelfs niet voor lokale variabelen.

[ Voor 53% gewijzigd door crisp op 28-12-2004 23:29 ]

Intentionally left blank


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21

tombo_inc

uhuh

toch raar dat window.close() niet ineens werkt. dat deed ie bij mij namelijk wel. ik had ook een script die de close() functie aanriep en dat werkte gewoon in FF. mssn werkt het bij mij wel omdat ik het rechtstreeks naar de browser echo()de met php :S

[ Voor 22% gewijzigd door tombo_inc op 29-12-2004 09:09 ]

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:15

crisp

Devver

Pixelated

Tombo_inc schreef op woensdag 29 december 2004 @ 09:08:
toch raar dat window.close() niet ineens werkt. dat deed ie bij mij namelijk wel. ik had ook een script die de close() functie aanriep en dat werkte gewoon in FF. mssn werkt het bij mij wel omdat ik het rechtstreeks naar de browser echo()de met php :S
Hoe de markup gegenereerd wordt heeft natuurlijk niets te maken met hoe het aan de clientside geinterpreteerd wordt. Als je goed gelezen had was dit het hele probleem:
JavaScript:
1
close = '';

knappe jongen als je daarna nog window.close() kan aanroepen, want je hebt zojuist van de method een string gemaakt ;)

Intentionally left blank

Pagina: 1