Hướng dẫn open new tab with html content - mở tab mới với nội dung html

Tôi đang tạo một tập lệnh Greasemonkey và muốn mở một tab mới sẽ không hiển thị URL nhưng một số HTML là một phần của tập lệnh. Vì vậy, về cơ bản tôi muốn làm một cái gì đó như thế này (rõ ràng là không hoạt động):

Show
window.open('');
or
GM_openInTab('');

Bất kỳ gợi ý đều được chào đón!

Hướng dẫn open new tab with html content - mở tab mới với nội dung html

Brock Adams

88.5K22 Huy hiệu vàng224 Huy hiệu bạc288 Huy hiệu Đồng22 gold badges224 silver badges288 bronze badges

Khi được hỏi ngày 13 tháng 5 năm 2012 lúc 16:38May 13, 2012 at 16:38

Hướng dẫn open new tab with html content - mở tab mới với nội dung html

Kasper Taeymanskasper Taeymanskasper Taeymans

6.8005 huy hiệu vàng31 Huy hiệu bạc 50 Huy hiệu đồng5 gold badges31 silver badges50 bronze badges

1

Bạn có thể làm được việc này:

var newWindow = window.open();

Và sau đó làm

var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
0

Đã trả lời ngày 13 tháng 5 năm 2012 lúc 16:42May 13, 2012 at 16:42

6

Tháng 4 năm 2021 Chỉnh sửa: Câu trả lời này đã lỗi thời. Chrome đã cấm tải dữ liệu uris vào cửa sổ trên cùng và giải pháp iframe không phù hợp với tôi trong Firefox. This answer is obsolete now. Chrome banned loading data URIs into the top window, and the iframe solution doesn't work for me in Firefox.

Câu trả lời gốc: Nếu câu trả lời khác cung cấp cho bạn

var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
1, hãy xem câu hỏi này về cách xử lý các vấn đề chính sách đồng nghĩa hoặc câu hỏi này. If the other answer gives you
var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
1, see this question about how to handle same-origin policy problems, or this one.

Hoặc, nhanh chóng và bẩn, sử dụng URI dữ liệu:

var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);

Đã trả lời ngày 9 tháng 1 năm 2016 lúc 14:50Jan 9, 2016 at 14:50

Hướng dẫn open new tab with html content - mở tab mới với nội dung html

NoumenonnoumenonNoumenon

4.2704 Huy hiệu vàng49 Huy hiệu bạc64 Huy hiệu đồng4 gold badges49 silver badges64 bronze badges

5

Tôi đang đặt điều này ở đây chỉ trong trường hợp bất cứ ai sẽ cần điều này. Tôi đã tạo ra một cách để giải quyết vấn đề này, tôi đã tạo một trang web nhỏ (https://tampermonkeykostyl.dacoconutnut.repl.co) mà bạn có thể đưa HTML vào băm! Ví dụ: (bạn có thể cần nhấp vào giữa URL để thực sự mở trong tab mới)

// get url
var el = document.getElementById("url");

// make html
var HTML = `

hi

if you can see this then cool
this should be italic and this should be bold `; // insert html after the link to demonstrate document.body.insertAdjacentHTML("beforeend", HTML); // https://stackoverflow.com/a/51432177/14227520 // set url href el.href = "https://tampermonkeykostyl.dacoconutnut.repl.co/#" + encodeURI(HTML); // make it open in new tab el.target = "_blank";
Click here to display following HTML in a link (see js):

Đã trả lời ngày 20 tháng 1 lúc 20:58Jan 20 at 20:58

Hướng dẫn open new tab with html content - mở tab mới với nội dung html

Giả sử bạn có tệp

var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
2 được lưu trữ cục bộ. Những gì bạn có thể làm là thế này:

var newWindow = window.open();
newWindow.document.location.href = "/path/to/html/file";

Đã trả lời ngày 16 tháng 4 năm 2019 lúc 15:27Apr 16, 2019 at 15:27

Hướng dẫn open new tab with html content - mở tab mới với nội dung html

Orestis Zekaaiorestis ZekaiOrestis Zekai

8871 Huy hiệu vàng15 Huy hiệu bạc27 Huy hiệu đồng1 gold badge15 silver badges27 bronze badges

1

Hướng dẫn open new tab with html content - mở tab mới với nội dung html

Các tab là tuyệt vời, phải không? Họ cho phép đa nhiệm trong tất cả chúng ta tung hứng một loạt các nhiệm vụ trực tuyến cùng một lúc.

Các tab bây giờ rất phổ biến đến nỗi, khi bạn nhấp vào liên kết, có khả năng nó sẽ mở trong một tab mới.

Nếu bạn đã từng tự hỏi làm thế nào để làm điều đó với các liên kết của riêng mình, bạn đã đến đúng nơi.

Phần tử neo

Để tạo một liên kết trên một trang web, bạn cần bao bọc một phần tử (văn bản, hình ảnh, v.v.) trong phần tử neo (

var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
3) và đặt thuộc tính
var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
4 của nó cho URL bạn muốn liên kết đến.

Check out freeCodeCamp.

Kiểm tra Freecodecamp.

Cảm ơn một lần nữa vì đã đọc. Mã hóa hạnh phúc.

Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Các tab là tuyệt vời, phải không? Họ cho phép đa nhiệm trong tất cả chúng ta tung hứng một loạt các nhiệm vụ trực tuyến cùng một lúc.

Các tab bây giờ rất phổ biến đến nỗi, khi bạn nhấp vào liên kết, có khả năng nó sẽ mở trong một tab mới.

Nếu bạn đã từng tự hỏi làm thế nào để làm điều đó với các liên kết của riêng mình, bạn đã đến đúng nơi.

Check out freeCodeCamp.

Phần tử neo

Để tạo một liên kết trên một trang web, bạn cần bao bọc một phần tử (văn bản, hình ảnh, v.v.) trong phần tử neo (var html = 'ohai'; var uri = "data:text/html," + encodeURIComponent(html); var newWindow = window.open(uri); 3) và đặt thuộc tính var html = 'ohai'; var uri = "data:text/html," + encodeURIComponent(html); var newWindow = window.open(uri); 4 của nó cho URL bạn muốn liên kết đến.

Nếu bạn nhấp vào liên kết ở trên, trình duyệt sẽ mở liên kết trong cửa sổ hoặc tab hiện tại. Đây là hành vi mặc định trong mọi trình duyệt.

Check out freeCodeCamp.

Để mở một liên kết trong một tab mới, chúng ta sẽ cần xem xét một số thuộc tính khác của các thuộc tính khác của phần tử neo.

Kiểm tra Freecodecamp.

Cảm ơn một lần nữa vì đã đọc. Mã hóa hạnh phúc.

Tabnabbing là gì?

Tabnabbing, đôi khi được gọi là TabNabbing ngược, là một khai thác sử dụng hành vi mặc định của trình duyệt với

var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
7 để có quyền truy cập một phần vào trang của bạn thông qua API
// get url
var el = document.getElementById("url");

// make html
var HTML = `

hi

if you can see this then cool
this should be italic and this should be bold `; // insert html after the link to demonstrate document.body.insertAdjacentHTML("beforeend", HTML); // https://stackoverflow.com/a/51432177/14227520 // set url href el.href = "https://tampermonkeykostyl.dacoconutnut.repl.co/#" + encodeURI(HTML); // make it open in new tab el.target = "_blank";
3.

Với tabnabbing, một trang mà bạn liên kết có thể khiến trang của bạn chuyển hướng đến trang đăng nhập giả. Điều này sẽ rất khó để hầu hết người dùng chú ý vì trọng tâm sẽ là trên tab vừa mở - không phải là tab ban đầu với trang của bạn.

Sau đó, khi một người chuyển trở lại tab với trang của bạn, họ sẽ thấy trang đăng nhập giả thay thế và có thể nhập chi tiết đăng nhập của họ.

Nếu bạn quan tâm đến việc tìm hiểu thêm về cách thức hoạt động của Tabnabbing và những gì các diễn viên xấu có thể làm với việc khai thác, hãy xem bài viết của Alex Yumashev và bài viết này của OWASP.

Nếu bạn muốn xem một ví dụ về SafeWorking, hãy xem trang này và repo GitHub của nó để biết thêm thông tin về khai thác và thuộc tính

// get url
var el = document.getElementById("url");

// make html
var HTML = `

hi

if you can see this then cool
this should be italic and this should be bold `; // insert html after the link to demonstrate document.body.insertAdjacentHTML("beforeend", HTML); // https://stackoverflow.com/a/51432177/14227520 // set url href el.href = "https://tampermonkeykostyl.dacoconutnut.repl.co/#" + encodeURI(HTML); // make it open in new tab el.target = "_blank";
0.working example, check out this page and its GitHub repo for more information about the exploit and the
// get url
var el = document.getElementById("url");

// make html
var HTML = `

hi

if you can see this then cool
this should be italic and this should be bold `; // insert html after the link to demonstrate document.body.insertAdjacentHTML("beforeend", HTML); // https://stackoverflow.com/a/51432177/14227520 // set url href el.href = "https://tampermonkeykostyl.dacoconutnut.repl.co/#" + encodeURI(HTML); // make it open in new tab el.target = "_blank";
0 attribute.

Tóm tắt

Thật dễ dàng để sử dụng HTML để mở một liên kết trong một tab mới. Bạn chỉ cần một phần tử neo (

var html = 'ohai';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
3) với ba thuộc tính quan trọng:

  1. Thuộc tính
    var html = 'ohai';
    var uri = "data:text/html," + encodeURIComponent(html);
    var newWindow = window.open(uri);
    
    4 được đặt thành URL của trang bạn muốn liên kết đến
  2. Thuộc tính
    var html = 'ohai';
    var uri = "data:text/html," + encodeURIComponent(html);
    var newWindow = window.open(uri);
    
    5 được đặt thành
    var html = 'ohai';
    var uri = "data:text/html," + encodeURIComponent(html);
    var newWindow = window.open(uri);
    
    6, cho biết trình duyệt mở liên kết trong một tab/cửa sổ mới, tùy thuộc vào cài đặt của trình duyệt
  3. Thuộc tính
    // get url
    var el = document.getElementById("url");
    
    // make html
    var HTML = `
    

    hi

    if you can see this then cool
    this should be italic and this should be bold `; // insert html after the link to demonstrate document.body.insertAdjacentHTML("beforeend", HTML); // https://stackoverflow.com/a/51432177/14227520 // set url href el.href = "https://tampermonkeykostyl.dacoconutnut.repl.co/#" + encodeURI(HTML); // make it open in new tab el.target = "_blank";
    0 được đặt thành
    Click here to display following HTML in a link (see js):
    0 để ngăn chặn các cuộc tấn công độc hại có thể xảy ra từ các trang bạn liên kết đến

Một lần nữa, đây là một ví dụ làm việc đầy đủ:

Check out freeCodeCamp.

Dẫn đến đầu ra sau trong trình duyệt:

Kiểm tra Freecodecamp.

Cảm ơn một lần nữa vì đã đọc.Mã hóa hạnh phúc.



Học mã miễn phí.Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển.Bắt đầu