JavaScript: location.href để mở trong cửa sổ / tab mới?


389

Tôi có một tệp JavaScript từ nhà phát triển bên thứ ba. Nó có một liên kết có thay thế trang hiện tại với mục tiêu. Tôi muốn mở trang này trong một tab mới.

Đây là những gì tôi có cho đến nay:

if (command == 'lightbox') {
 location.href="https://support.wwf.org.uk/earth_hour/index.php?type=individual";
}

Bất cứ ai có thể giúp tôi ra?

Câu trả lời:


931
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);

102
Đáng để đề cập: Việc một tab hoặc cửa sổ mới được tạo ra, được quyết định bởi trình duyệt (cài đặt).
jAndy

4
@alex Tôi đã chỉnh sửa câu trả lời này để làm cho bit quan trọng có thể đọc được. Nếu bạn không chấp nhận định dạng của tôi, tôi có thể đề xuất rút ngắn URL để tham số thứ hai phù hợp với khu vực không kiểm soát không?
Phrogz

5
@ErickBest Điều đó không chính xác. "_blank"đảm bảo rằng cửa sổ / tab sẽ là mới. Bất cứ điều gì khác (ngoài các tên đặc biệt khác) đều đặt cho cửa sổ đó tên cụ thể và các liên kết tiếp theo đến mục tiêu đó sẽ sử dụng lại cửa sổ. jsFiddle .
alex

2
Điều này chỉ kích hoạt thông báo chặn bật lên trong các trình duyệt hiện đại, hoàn toàn không mô phỏng _blanknhấp chuột neo.
Nathan Hornby

22
cửa sổ bật lên bị chặn bởi trình duyệt.
Jitendra Pancholi 17/03/2015

24

Nếu bạn muốn sử dụng location.hrefđể tránh các sự cố bật lên, bạn có thể sử dụng một <a>ref trống và sau đó sử dụng javascript để nhấp vào nó.

một cái gì đó giống như trong HTML

<a id="anchorID" href="mynewurl" target="_blank"></a>

Sau đó, javascript nhấp vào nó như sau

document.getElementById("anchorID").click();

13
Tôi đã hy vọng cho giải pháp này, tuy nhiên dường như nó vẫn kích hoạt khối cửa sổ bật lên (ít nhất là trong Chrome). Tôi có cảm giác rằng trình duyệt nhận thức được rằng đó là một lần nhấp javascript và xử lý nó khác đi.
Nathan Hornby

1
Cảm ơn bạn. Bạn khá đúng. Bạn vẫn nhận được một tin nhắn khối bật lên. Tôi nghĩ rằng tôi đã chữa khỏi nó. Về lý thuyết nó nên hoạt động. Andrew
andrew lĩnh vực

2
$("#anchorID")[0].click(); để sử dụng giải pháp này với jquery.
theBell

1
Lol theBell, Không phải jQuery nếu bạn đang truy cập trực tiếp Phần tử DOM[0]
Andre Figueiredo

7

Bạn có thể mở nó trong một cửa sổ mới với window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Nếu bạn muốn mở nó trong tab mới, hãy mở trang hiện tại trong hai tab và sau đó cho phép tập lệnh chạy để cả trang hiện tại và trang mới sẽ được lấy.


6

Js tinh khiết thay thế cho window.open

let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click();

đây là ví dụ hoạt động (đoạn trích stackoverflow không cho phép mở)


0

Ví dụ:

    $(document).on('click','span.external-link',function(){
        var t               = $(this), 
            URL             = t.attr('data-href');        
        $('<a href="'+ URL +'" target="_blank">External Link</a>')[0].click();

    });

Ví dụ làm việc .


Popup bị chặn bởi trình duyệt.
Millar248

1
Điều đó có nghĩa là bạn có quảng cáo hoặc thứ gì đó chặn nó. Hành vi mặc định sẽ hoạt động trong điều kiện bình thường
Andrey Seregin

0

Bạn cũng có thể mở một tab mới gọi một phương thức hành động với tham số như thế này:

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');

Là dòng đầu tiên và thứ hai cần thiết? Nó sẽ không hoạt động mà không có các biến reportDateurl?
Học cho vui

Bạn có thể lấy tham số (reportDate), nhưng url var rất quan trọng vì nó chứa lệnh gọi phương thức hành động.
Primoshenko
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.