2010-12-13 34 views
5

Tôi đang tìm cách thêm nút "tweet this" vào trang web. Đủ đơn giản, phải không? Việc nắm bắt là trang web có nghĩa là để chạy trên một nền tảng nhúng mà không đặc biệt xử lý các cửa sổ popup, vì vậy tôi đang cố gắng làm mọi thứ bên trong trang.Tạo nút tweet mà không cần mở một cửa sổ mới

Tôi có thể tạo thành công nút tweet của mình, đính kèm trình xử lý onClick vào đó và xây dựng URL twitter.com/share thích hợp cho nội dung có liên quan. Tất cả các công trình tốt khi tôi mở URL đó trong một cửa sổ mới với window.open. Tuy nhiên, nếu tôi cố mở URL trong khung nội tuyến, không có gì tải trong khung. Thậm chí tải http://twitter.com vào khung nội tuyến cũng không thành công theo cùng một cách. Tuy nhiên, tải Google hoặc bất kỳ trang web nào khác có vẻ hoạt động tốt.

Bất kỳ suy nghĩ nào về những gì tôi thiếu ở đây? Cảm ơn! --zach

Edit: Yep, họ đang khám phá ra iframe vào tải và tẩy trống trang:

if (window.top !== window.self) { 
    document.write = ""; 
    window.top.location = window.self.location; 
    setTimeout(function(){ document.body.innerHTML='';},1); 
    window.self.onload=function(evt){document.body.innerHTML='';}; 

}

Bất kỳ cách nào hợp lý để làm được việc này, hay tôi bị mắc kẹt viết đường dẫn auth của riêng tôi thông qua oauth? Tôi không cần bất kỳ thứ gì từ API của họ, chỉ cho phép người dùng đăng nhập vào tài khoản của họ.

Trả lời

10

Twitter (như Stack Overflow) có lẽ là sử dụng một số Javascript để đảm bảo chúng không được trình bày trong một iFrame:

if(top!=self){ 
    //hates you 
} 

tôi chạy vào một cái gì đó tương tự gần đây, và kết thúc lại làm một phần của tôi ứng dụng không có phần tử iFrame.

+3

+1 vì ghét !! –

1

Bạn có thể chỉ cần chuyển hướng URL chia sẻ twitter không? Tôi đoán họ muốn cẩn thận về việc mở cửa sổ trong khung nội tuyến để ngăn các trang web độc hại khỏi tweet trong tài khoản của người dùng mà không cho người dùng cơ hội xác nhận ý định gửi tweet này trước tiên.

2

Go và có được một tài khoản developper trên twitter và những thứ được thực hiện dễ dàng cho bạn :)

0

Bạn nói window.open làm việc tốt cho popping lên url trong một cửa sổ mới, nhưng có bạn đã cố gắng popping nó vào phụ huynh khung?

twtWindow=window.open([url],'_parent',[specs]) 
0

@yuval Thật không may cho bạn, url twitter đến trang có tùy chọn X-KHUNG: Tiêu đề SAMEORIGIN được đặt trong phản hồi. Nó không phải là một kiểm tra Javascript. Trình duyệt sẽ chỉ từ chối hiển thị trang sau khi xem tiêu đề. Điều này được thực hiện để ngăn chặn một cuộc tấn công clickjacking, thường được thực hiện để ăn cắp mật khẩu của người dùng.

Vì vậy, lựa chọn duy nhất khác của bạn thực sự là chuyển hướng trang hiện tại của bạn với window.location.href=url.

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