2012-01-20 27 views
34

Có trong HTML (javascript) hoặc công nghệ html tĩnh khác có thể:Làm thế nào để ngăn chặn tải trang trong trang html tĩnh

  • Dừng tải trang (nếu trình duyệt không tải chưa)
  • Dừng render nên trang web (từ nơi mã đặt)
  • Dừng javascript thực hiện (từ nơi mã đặt)

một cách đơn giản, là có một mã như

<script>window.StopWhateverBelow()</script> 

Để cho phép trình duyệt hoàn toàn bỏ qua bất kỳ điều gì bên dưới mã.

CẬP NHẬT

Tôi hiểu những trình duyệt có thể đã tải về toàn bộ sự việc. Những gì tôi muốn là, từ mã, trang nên dừng lại, ví dụ: nếu tôi đặt mã ngay sau khi <body> khách truy cập sẽ thấy trang trống, nếu tôi đặt mã ở giữa trang, trang sẽ chỉ bằng một nửa như bạn đã nhấn ESC

ĐÁP

Như bukko đề nghị, ý kiến ​​làm các trick. Nhưng không đầy, chỉ một nửa Nếu bạn đặt <!-- trong trang html, phần còn lại sẽ bị bỏ qua. Và trong Javascript

document.write('<!--'); 

Hoàn thành thủ thuật.

Khoảng có ý nghĩa:

Sau đây là cách mã này có ý nghĩa: khi bạn trang tải một số kịch bản offpage, kịch bản là năng động. Khi mã script tìm thấy một cái gì đó sai (hoặc phù hợp với một số điều kiện), bạn có thêm một tùy chọn để ngăn chặn trang từ rendering, tải, download ...

+1

Nó sẽ không thực hiện bất kỳ ý nghĩa. Bạn muốn làm gì ? –

+0

bạn có yêu cầu thêm khả năng thêm nhận xét mà không có chúng hiển thị cho khách truy cập trung bình không? Làm cho không có ý nghĩa để ngăn chặn trình duyệt giải thích bất cứ điều gì ... – Jakub

+0

@ LoïsDiQual Loại nhận xét tiêu cực này là không phù hợp. Tôi chỉ vấp phải một trường hợp sử dụng tốt cho điều này (hơn 5 năm sau đó!) Và tôi rất vui vì câu hỏi này đã nhận được câu trả lời tốt, thay vì bị downvoted vì có phần bất thường. – vog

Trả lời

18

Nếu bạn đã có nhận xét html trên trang của mình, giải pháp @ bukko không hoạt động đầy đủ. Nội dung sau khi nhận xét html sẽ được hiển thị bình thường.

Cái gì khác để thử là:

document.write('<script type="text/undefined">') 

Phần còn lại của tài liệu được giải thích như là một phần của thẻ script, và bởi vì kịch bản không phải là text/javascript, nó được bỏ qua.

Làm việc cho tôi, tôi nghĩ tôi sẽ chia sẻ nó.


Sửa

Tôi đã nhìn thấy các trick script không hoạt động trong Chrome.

này không làm việc, nhưng tôi đã không thực hiện kiểm tra trình duyệt mở rộng:

document.write('<style type="text/undefined">') 
+0

trình duyệt (Chrome) tự động đóng nó bằng '' sau bất kỳ nỗ lực nào để thực hiện điều này – Owyn

5

Vâng, đó là: <!-- terminated by --> cho HTML, nhưng kịch bản sẽ Bỏ qua điều này.

+0

bạn chắc chắn? Nó không hoạt động –

1

HTML là nội dung tĩnh nên máy chủ đọc bất kỳ nội dung gì bạn đã viết trong tệp trừ khi bạn nhận xét. Đối với một tập tin động như những gì bạn đang yêu cầu cho bạn cần phải sử dụng php mà có thể làm điều này loại điều.

+1

Có các tùy chọn khác nếu bạn muốn xây dựng các trang động không chỉ php –

3

Điều bạn đang yêu cầu không có ý nghĩa logic. Đơn giản vì hai lý do:

  • Dữ liệu ALREADY được gửi tới người dùng (HTML/JS) vì vậy ngay cả khi bạn ẩn nội dung, dữ liệu sẽ ở đó để người dùng xem (nếu họ xem nguồn ví dụ).
  • Tại sao bạn dừng 'thực thi' một trang? Nó tải cấu trúc html đơn giản và reults trong một màn hình hiển thị trực quan, bạn nên tập trung vào trang web của máy chủ (ví dụ php) để ẩn hoặc không gửi nội dung ở nơi đầu tiên.

Nếu bạn muốn ẩn trực quan các yếu tố tho, bạn có thể sử dụng phong cách CSS (ẩn divs hoặc tương tự) với chỉ đơn giản là thêm style="display:none;" đến một div như vậy:

<div style="display:none;"> 
This text will be downloaded by the user, but hidden from view due to CSS inline style 
</div> 

Nếu bạn muốn thêm bình luận (thats chỉ để bạn tham khảo), sau đó sử dụng bình định dạng:

<!-- this is a comment and will not show up to a user --> 

tham khảo cho ý kiến: http://htmlhelp.com/reference/wilbur/misc/comment.html

46

Bạn có thể làm window.stop(); cho hầu hết các trình duyệt bên cạnh Internet Explorer. Đối với IE, tôi phải sử dụng document.execCommand('Stop');

+2

Tại sao bạn cần phải nhập jQuery cho các chức năng đó? Họ nên làm việc mà không cần jQuery. – XP1

+0

Đã sửa lỗi! Cảm ơn vì tiền hỗ trợ! – cyberboxster

3

đặt window.Stop() bất cứ nơi nào bạn muốn dừng trang khỏi bị renderred

16
window.stop(); //works in all browsers but IE  
if ($.browser.msie) {document.execCommand("Stop");}; //works in IE, 

document.execCommand hoạt động trong IE, tuy nhiên nó dừng một số chức năng của FF, NS và một số trình duyệt khác. Giống như hiển thị hình động của GIF chẳng hạn. Sử dụng "nếu trình duyệt là IE" làm cho hai mã này hoạt động hoàn hảo trong tất cả các trình duyệt.

1

Không liên quan nhiều đến câu hỏi, nhưng tôi nghĩ nó có thể hữu ích cho một số người. Nếu bạn muốn chuyển đến trang khác trong khi tải trang sử dụng window.location = "somepage.html"; hoặc bạn có thể chuyển hướng người dùng đến trang trước: window.history.go(-1); Hữu ích trong các câu lệnh có điều kiện JavaScript

+0

Trang này sẽ vẫn hiển thị, bất kể hiển thị nhanh như thế nào, sử dụng tính năng này. – whitebeard

1

Nếu bạn đang sử dụng ASP hoặc PHP, giao thức HTTP tự động dừng nhưng giao thức HTTPS don ' t ngừng tự động.

Để ngăn chặn nó sử dụng:

Trong ASP: Mã

dim r= accept.secure.protocol 
r.onload=window.callback('c') 

//to firefox,opera,safari 

new clientObject(r).access() 
// to chrome,ie 

forEachElement(a==null); 

PHP:

$a.window ; 

Tất cả các kịch bản này gửi browserstring "elementcast" qua đường bưu điện phương pháp

1

Bạn cũng có thể che giấu cơ thể như thế:

var style = document.createElement("style"); 
style.innerHTML="body { display:none !important; }"; 
document.getElementsByTagName("HEAD")[0].appendChild(style); 
0

Phương pháp dừng có thể phá vỡ những thứ đã bắt đầu tải.

Nếu bạn muốn tải tất cả mọi thứ trên một điểm nhất định và bỏ qua tất cả mọi thứ dưới một điểm nhất định:

<p>Everything works above this point.</p> 
<pre style="display: none !important;"> 
<p>As long as the PRE tag remains open, 
nothing works below this point</p> 
<script>document.write('Nope'); 
Các vấn đề liên quan