2013-02-15 55 views
8

Tôi đang tạo thẻ meta HTML động bằng cách sử dụng hàm bên dưới (GWT). Mất 1 giây để có điều này trên DOM. Nó hoạt động tốt ngoại trừ Facebook. Khi tôi chia sẻ liên kết từ trang web của mình, trình thu thập dữ liệu sẽ nhận được các thẻ meta trong HTML: none. Làm thế nào tôi có thể sửa lỗi này?Trình gỡ rối Facebook không tải các thẻ meta động

/** 
* Include the HTML attributes: title, description and keywords (meta tags) 
*/ 
private void createHTMLheader(MyClass thing) { 

    String title=thing.getTitle(); 
    String description=thing.getDescription(); 

    Document.get().setTitle(title); 

    MetaElement metaDesc = Document.get().createMetaElement(); 
    metaDesc.setName("description"); 
    metaDesc.setContent(description); 
    NodeList<Element> nodes = Document.get().getElementsByTagName("head"); 
    nodes.getItem(0).appendChild(metaDesc); 
} 

Đây là kết quả HEAD trên DOM. Tiêu đề aaaa và mô tả meta đã được tải động. (Cảm ơn CBroe cho tip). Trong chức năng "xem nguồn", các thẻ động này không được hiển thị (chỉ trên các công cụ nhà phát triển - xem dom).

<head> 
    <title>aaaa</title> 
    <meta content="text/html; charset=utf-8" http-equiv="content-type"> 
    <meta name="description" content="My description"> 

    <script language="javascript" type="text/javascript" src="dialective/dialective.nocache.js"></script><script defer="defer">dialective.onInjectionDone('dialective')</script> 

</head> 

HTML ban đầu không có thẻ TITLE hoặc META-DESCRIPTION.

+1

Bạn có thể hiển thị HTML này thực sự tạo ra không? –

+0

Cảm ơn. Chỉ cần thêm – Arturo

+1

Bạn có đang cố gắng thêm thẻ HTML bằng ứng dụng Java hay gì đó không? Trình gỡ rối Facebook sẽ không chạy mã Java của bạn. Nó sẽ thấy chính xác những gì máy chủ web của bạn đang gửi. –

Trả lời

11

Trình gỡ rối Facebook chỉ có thể thấy các thẻ <meta> được bao gồm trong phản hồi HTML gốc từ máy chủ. Nó không đủ thông minh để chạy bất kỳ mã JavaScript, plugin Flash, ứng dụng Java hoặc bất kỳ thứ gì khác mà trình duyệt chính thức có thể chạy.

Bạn sẽ cần tạo các thẻ <meta> này trên máy chủ bằng cách sử dụng khung bên máy chủ.

Ngoài ra, Facebook cung cấp một tiện ích testing tool để đảm bảo trang của bạn hiển thị các thẻ meta thích hợp. Bạn cũng có thể cần phải thêm các thẻ OpenGraph, chẳng hạn như og:titleog:description.

+0

Xin chào Mike, điểm mà bạn đã thực hiện về trình gỡ rối Facebook chỉ thấy orig 'HTML là những gì tôi đã tìm thấy khi tôi gặp vấn đề tương tự như OP. Tuy nhiên tôi đã tìm ra điều gì nếu tôi nạp AddThis bằng cách sử dụng $ .getScript sau khi tôi đã thực hiện các thay đổi đối với DOM. Theo lý thuyết của tôi, cách FB sẽ chỉ đến để cạo với DOM mới. Nhưng điều này là không thể? Tôi sợ rằng khi AddThis cháy và FB chia sẻ được nhấp vào URL được chuyển đến FB và sau đó nó thực hiện một độc lập cạo của URL chia sẻ mà không có các thẻ meta đã chỉnh sửa javascript. Bạn có bất kỳ suy nghĩ về điều này? Daniel. –

-1

Đối với một số lý do, mô tả meta chưa được nạp với các chức năng trên ...

Đó là bởi vì bạn chỉ tạo một MetaElement mới - nhưng bạn làm gì với nó .

Bạn phải nối thêm vào tài liệu, cụ thể hơn cho phần tử head của nó.

Something như

getHead().appendChild(metaDesc) 

là mất tích.

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