2011-08-18 22 views
13

Tôi có một javascript như thế này, sử dụng i một bookmarklet:Javascript bookmarklet đi đến URL và thực hiện

window.location="URL" 
document.getElementById('username-id').value = 'User' 
document.getElementById('pwd-id').value = 'pass' 
doLogin(); 

Vấn đề là javascript dừng ngay khi nó chạm URL. Làm cách nào để chuyển sang trang và thực thi tập lệnh?

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

5

Rất tiếc, bookmarklet của bạn sẽ không hoạt động. Thay đổi window.location tải kết quả của trang mới - bạn không thể thực thi bất kỳ Javascript nào trên trang đó mà không có tài liệu có mặt trước.

Hành động mong muốn có thể đạt được bằng tiện ích mở rộng của trình duyệt, ví dụ: Tập lệnh Greasemonkey, thực thi Javascript được chỉ định trên trang khi tải trang.

1

Hãy thử gói mã của bạn với sự kiện window.onload.

window.location = "URL"; window.onload = function() { 
document.getElementById('username-id').value = 'User' 
document.getElementById('pwd-id').value = 'pass' 
doLogin(); 
} 

Là giải pháp trên không làm việc, bạn vẫn sẽ có thể viết một phần mở rộng trình duyệt đơn giản để giải quyết vấn đề của bạn. Thật dễ dàng: chọn trình duyệt bạn sử dụng và làm theo tài liệu. Đây chỉ là cách để làm điều đó.

+0

Đã thử nó, vẫn không có may mắn. Kịch bản chỉ cần đi đến trang và dừng lại. – Temikus

+0

Sau đó, bạn cần phải viết một phần mở rộng trình duyệt để giải quyết vấn đề của bạn, bởi vì bookmarklets không quá mạnh trong trường hợp này. –

+0

nó sẽ không hoạt động. new page = tập lệnh mới. không thể chạy tập lệnh trong một trang khác mà nó được khai báo. –

1

Nếu bạn kiểm soát trang bạn đang tải, tôi sẽ xem xét chuyển dữ liệu đó dưới dạng đoạn và xử lý dữ liệu đó từ trang. Một cái gì đó như window.location="URL#username=...;password=...", hơn phân tích dữ liệu từ đoạn trong trang và làm bất cứ điều gì bạn cần với nó. Tuy nhiên, trong trường hợp cụ thể này, ý tưởng không tốt vì mật khẩu sẽ được lưu trong lịch sử duyệt web.

13

Tôi không đề xuất tiện ích mở rộng trình duyệt - chúng cho phép mã không đáng tin cậy chạy trong ngữ cảnh của mã đáng tin cậy. Nếu bạn có tiện ích mở rộng trình duyệt tải một trang và tự động nhập ID người dùng và mật khẩu của bạn, điều gì sẽ ngăn không cho đăng các thông tin đăng nhập đó vào một trang web độc hại? Chỉ có bạn, và chỉ khi bạn đã đọc kỹ mã nguồn.

Để giải quyết vấn đề trên, chúng tôi đã thêm dấu trang để thanh yêu thích trong trình duyệt của tôi đòi hỏi phải có hai lần nhấp chuột: 1. Click to navigate đến vị trí 2. Nhấn để điền vào form

javascript: 
var L='http://mysite.com/'; 
if(location!=L)location=L; 
else{ 
    document.getElementById('username-id').value='User'; 
    document.getElementById('pwd-id').value = 'pass'; 
    document.close(); 
    doLogin(); 
} 

Chúc may mắn!

Các vấn đề liên quan