ฉันมีกล่องเลือกที่โทรwindow.open(url)
เมื่อมีการเลือกรายการ Firefox จะเปิดหน้าในแท็บใหม่ตามค่าเริ่มต้น อย่างไรก็ตามฉันต้องการให้หน้าเปิดในหน้าต่างใหม่ไม่ใช่แท็บใหม่
ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันมีกล่องเลือกที่โทรwindow.open(url)
เมื่อมีการเลือกรายการ Firefox จะเปิดหน้าในแท็บใหม่ตามค่าเริ่มต้น อย่างไรก็ตามฉันต้องการให้หน้าเปิดในหน้าต่างใหม่ไม่ใช่แท็บใหม่
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ระบุพารามิเตอร์ 'specs' ที่มีความกว้าง / ความสูง ดูที่นี่สำหรับตัวเลือกที่เป็นไปได้ทั้งหมด
window.open(url, windowName, "height=200,width=200");
เมื่อคุณระบุความกว้าง / ความสูงมันจะเปิดในหน้าต่างใหม่แทนแท็บ
คุณไม่จำเป็นต้องใช้ความสูงเพียงแค่ให้แน่ใจว่าคุณใช้_blank
หากไม่มีมันก็จะเปิดในแท็บใหม่
สำหรับหน้าต่างว่าง:
window.open('', '_blank', 'toolbar=0,location=0,menubar=0');
สำหรับ URL เฉพาะ:
window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
location=0
เป็นสิ่งจำเป็นเมื่อเรียกใช้ JS จากปุ่มหรือองค์ประกอบยึด
location=0
พารามิเตอร์ ฉันขอแนะนำให้ตั้งชื่อหน้าต่างแทนการใช้การใช้_blank
เป้าหมายเพื่อให้มีการใช้หน้าต่างเดิมอีกครั้งหากผู้ใช้คลิกองค์ประกอบที่เปิดป๊อปอัปหลายครั้งและผูกสายfocus()
เพื่อให้ป๊อปอัปที่เปิดอยู่ได้รับความสนใจ:window.open('http://stackoverflow.com', 'Stack_Overflow','location=0').focus();
ฉันอาจจะผิด แต่จากสิ่งที่ฉันเข้าใจนี่ถูกควบคุมโดยการตั้งค่าเบราว์เซอร์ของผู้ใช้และฉันไม่เชื่อว่าสิ่งนี้สามารถถูกแทนที่ได้
ลอง:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
ฉันมีรหัสบางอย่างที่ทำในสิ่งที่คุณพูด แต่มีพารามิเตอร์มากมายในนั้น ฉันคิดว่าสิ่งเหล่านี้เป็นขั้นต่ำเปล่าแจ้งให้เราทราบหากไม่ได้ผลฉันจะโพสต์ส่วนที่เหลือ
ตกลงหลังจากทำแบบทดสอบมากมายมาที่นี่บทสรุปของฉัน:
เมื่อคุณแสดง:
window.open('www.yourdomain.tld','_blank');
window.open('www.yourdomain.tld','myWindow');
หรือสิ่งที่คุณใส่ในฟิลด์ปลายทางสิ่งนี้จะไม่เปลี่ยนแปลงอะไร: หน้าใหม่จะเปิดในแท็บใหม่ (ดังนั้นขึ้นอยู่กับการตั้งค่าของผู้ใช้)
หากคุณต้องการให้เปิดหน้าในหน้าต่าง "จริง" ใหม่คุณต้องใส่พารามิเตอร์เพิ่มเติม ชอบ:
window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');
หลังจากการทดสอบดูเหมือนว่าพารามิเตอร์พิเศษที่คุณใช้ไม่สำคัญ: นี่ไม่ใช่ความจริงที่คุณใส่ "พารามิเตอร์นี้" หรือ "อีกอันหนึ่ง" ซึ่งสร้าง "หน้าต่างจริง" ใหม่ แต่ความจริงมีพารามิเตอร์ใหม่ )
แต่มีบางอย่างสับสนและอาจอธิบายคำตอบที่ผิดมาก:
นี้:
win1 = window.open('myurl1', 'ID_WIN');
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
และนี่:
win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
win1 = window.open('myurl1', 'ID_WIN');
จะไม่ให้ผลลัพธ์เดียวกัน
ในกรณีแรกเป็นครั้งแรกที่คุณเปิดหน้าโดยไม่ต้องพารามิเตอร์พิเศษก็จะเปิดใหม่แท็บ และในกรณีนี้สายที่สองจะถูกเปิดในแท็บนี้เนื่องจากชื่อที่คุณให้
ในกรณีที่สองเมื่อคุณทำการโทรครั้งแรกด้วยพารามิเตอร์เพิ่มเติมหน้าจะเปิดขึ้นใน " หน้าต่างจริง " ใหม่ และในกรณีนั้นแม้ว่าจะมีการเรียกครั้งที่สองโดยไม่มีพารามิเตอร์พิเศษมันจะถูกเปิดใน " หน้าต่างจริง " ใหม่นี้... แต่เป็นแท็บเดียวกัน!
นี่หมายความว่าการโทรครั้งแรกมีความสำคัญเนื่องจากจะต้องตัดสินใจว่าจะวางหน้าไหน
คุณไม่จำเป็นต้องทำ อนุญาตให้ผู้ใช้มีสิ่งที่พวกเขาต้องการ
Firefox ทำเช่นนั้นโดยค่าเริ่มต้นเนื่องจากการเปิดหน้าเว็บในหน้าต่างใหม่นั้นน่ารำคาญและไม่ควรอนุญาตให้ทำเช่นนั้นหากไม่ใช่สิ่งที่ผู้ใช้ต้องการ (Firefox อนุญาตให้คุณเปิดแท็บในหน้าต่างใหม่หากคุณตั้งค่าไว้)
คุณอาจลองใช้ฟังก์ชันต่อไปนี้:
<script type="text/javascript">
function open(url)
{
var popup = window.open(url, "_blank", "width=200, height=200") ;
popup.location = URL;
}
</script>
รหัส HTML สำหรับการดำเนินการ:
<a href="#" onclick="open('http://www.google.com')">google search</a>
กุญแจสำคัญคือพารามิเตอร์:
หากคุณให้ พารามิเตอร์ [Height = "", Width = ""] จากนั้นจะเปิดในหน้าต่างใหม่
หากคุณไม่ได้ให้พารามิเตอร์ไว้มันจะเปิดในแท็บใหม่
ทดสอบใน Chrome และ Firefox
น่าสนใจฉันพบว่าถ้าคุณส่งสตริงว่าง (ตรงข้ามกับสตริงว่างหรือรายการคุณสมบัติ) สำหรับแอตทริบิวต์ที่สามของ window.open มันจะเปิดในแท็บใหม่สำหรับ Chrome, Firefox และ IE หากขาดไปพฤติกรรมจะแตกต่างกัน
ดังนั้นนี่คือสายใหม่ของฉัน:
window.open(url, windowName, '');
ลองใช้วิธีนั้น .....
function popitup(url) {
//alert(url);
newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
newwindow.moveTo(350,150);
if (window.focus)
{
newwindow.focus()
}
return false;
}
สำหรับฉันทางออกคือ
"location=0"
ในพารามิเตอร์ที่ 3 ทดสอบ FF / Chrome ล่าสุดและ IE11 เวอร์ชั่นเก่า
วิธีการโทรแบบเต็มฉันใช้อยู่ด้านล่าง (ตามที่ฉันต้องการใช้ความกว้างของตัวแปร):
window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
ฉันเพิ่งลองกับ IE (11) และ Chrome (54.0.2794.1 canary SyzyASan):
window.open(url, "_blank", "x=y")
... และมันเปิดในหน้าต่างใหม่
ซึ่งหมายความว่าคลินต์ pachlได้ถูกต้องเมื่อเขากล่าวว่าการระบุพารามิเตอร์ใดพารามิเตอร์หนึ่งจะทำให้หน้าต่างใหม่เปิดขึ้น
- และเห็นได้ชัดว่าไม่จำเป็นต้องเป็นพารามิเตอร์ที่ถูกต้องตามกฎหมาย!
(YMMV - ตามที่ฉันบอกว่าฉันทดสอบในสองแห่งเท่านั้น ... และการอัปเกรดครั้งต่อไปอาจทำให้ผลลัพธ์ไม่ถูกต้องไม่ว่าทางใด)
การทางพิเศษแห่งประเทศไทย: ฉันเพิ่งสังเกตเห็น - ใน IE หน้าต่างไม่มีการตกแต่ง
ตอบที่นี่ที่นี่แต่โพสต์ไว้อีกครั้งเพื่อการอ้างอิง
window.open()
จะไม่เปิดในแท็บใหม่หากเหตุการณ์นั้นไม่เกิดขึ้นกับการคลิกจริง ในตัวอย่างที่กำหนดให้ url กำลังถูกเปิดในเหตุการณ์การคลิกจริง สิ่งนี้จะทำงานหากผู้ใช้มีการตั้งค่าที่เหมาะสมในเบราว์เซอร์
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open('www.yourdomain.com','_blank');
});
</script>
ในทำนองเดียวกันหากคุณพยายามโทร ajax ภายในฟังก์ชั่นคลิกและต้องการเปิดหน้าต่างสู่ความสำเร็จตรวจสอบให้แน่ใจว่าคุณกำลังโทร ajax ด้วยasync : false
ชุดตัวเลือก
ฉันคิดว่ามันไม่ใช่ปัญหาคุณสมบัติเป้าหมาย HTML แต่คุณไม่ได้เลือก "เปิดหน้าต่าง nw ในแท็บใหม่แทน" ตัวเลือกในแท็บ "แท็บ" ภายใต้เมนู "ตัวเลือก firefox" ตรวจสอบและลองอีกครั้ง
ฉันมีคำถามเดียวกันนี้ แต่พบวิธีแก้ปัญหาที่ค่อนข้างง่าย
ในจาวาสคริปต์ฉันกำลังตรวจwindow.opener !=null;
สอบว่ามีหน้าต่างปรากฏขึ้นหรือไม่ หากคุณใช้รหัสตรวจจับที่คล้ายกันเพื่อกำหนดว่าหน้าต่างที่คุณกำลังแสดงผลอยู่นั้นเป็นป๊อปอัปหรือไม่คุณสามารถ"ปิด"เมื่อคุณต้องการเปิดหน้าต่าง"ใหม่"โดยใช้ JavaScript หน้าต่างใหม่
เพียงใส่ที่ด้านบนของหน้าคุณต้องการเป็นหน้าต่าง"ใหม่"เสมอ
<script type="text/javascript">
window.opener=null;
</script>
ฉันใช้สิ่งนี้ในหน้าลงชื่อเข้าใช้ในเว็บไซต์ของฉันดังนั้นผู้ใช้จะไม่ได้รับพฤติกรรมป๊อปอัปหากพวกเขาใช้หน้าต่างป๊อปอัปเพื่อนำทางไปยังไซต์ของฉัน
คุณสามารถสร้างหน้าเปลี่ยนเส้นทางแบบง่าย ๆ ที่ทำได้จากนั้นย้ายไปยัง URL ที่คุณให้ไว้ สิ่งที่ต้องการ,
จาวาสคริปต์ในหน้าหลัก:
window.open("MyRedirect.html?URL="+URL, "_blank");
จากนั้นโดยใช้จาวาสคริปต์เล็ก ๆ น้อย ๆ จากที่นี่คุณจะได้รับ URL และเปลี่ยนเส้นทางไปยังมัน
JavaScript บนหน้าการเปลี่ยนเส้นทาง:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>