2011-11-09 35 views
9

Tôi có một vài mạng quảng cáo đã có thể tích hợp URL trả về (được yêu cầu khi hiển thị quảng cáo trả phí không có sẵn) nhưng một mạng quảng cáo chỉ có thể chấp nhận thẻ tập lệnh trả về mà tôi không có.Làm cách nào để tạo thẻ trả về từ URL?

Tập lệnh trả về cần tải nội dung của URL (hình ảnh 728x90 hoặc biểu ngữ flash) vào chính nó (nó cũng cần thực thi Javascript mà nó tải). Bất cứ ai có thể giúp tôi xây dựng một thẻ script trả về?

Tôi cố gắng này:

<SCRIPT language="Javascript"> 

// loads within itself, in the 728x90 banner space 

document.write("<SCR"+"IPT language=\'Javascript\' src=\'http://www.mydomain.com/passback.php\'></SCR"+"IPT>"); 

</SCRIPT> 

Nhưng có lỗi script. Ý tưởng nào?

+1

@Tom Tệp 'passback.js' trông như thế nào? –

+0

Bạn gặp phải lỗi gì? –

+0

Mã của bạn (phần bạn đã hiển thị) là tốt. Đó là kịch bản chỉ vào thuộc tính * src * gây ra các vấn đề - quan tâm để chia sẻ nó? Ngoài ra, sau câu hỏi Jan - bạn nhận được lỗi tập lệnh nào? – WTK

Trả lời

6

Chỉ là một ý tưởng. Nó sẽ làm gì nếu bạn thử cái này?

<SCRIPT language="JavaScript" type="text/javascript"> 

var script = document.createElement("script"); 
script.type = "text/javascript"; // This is for HTML 4.01 validation 
script.src = "http://www.mydomain.com/passback.php"; 
document.getElementsByTagName("head")[0].appendChild(script); 

</SCRIPT> 
+0

Tôi gặp phải lỗi tập lệnh. "Lỗi: thiếu; trước câu lệnh" – Tom

+2

bạn không nhận được lỗi từ mã ở trên, nó ở nơi khác – alessioalex

+0

Tôi đồng ý với @alessioalex, lỗi này có khả năng xảy ra trong tập lệnh của bạn. Hãy thử xác thực javascript của bạn trong một cái gì đó như jslint để thử và tìm dấu chấm phẩy bị mất và dấu ngoặc nhọn. Tôi cũng upvoted câu trả lời ở trên vì đây là một kỹ thuật tốt. – BenSwayne

0

Các kịch bản đã cung cấp gần một trong tôi luôn luôn sử dụng cho việc này:

var js = document.createElement("script"); 
js.type = "text/javascript"; 
js.src = "//www.mydomain.com/passback.php"; 
document.getElementsByTagName('head')[0].appendChild(js); 

Điều duy nhất mà là khác nhau là các thức truy cập URL không được xác định do đó nếu bạn đang chạy trên một máy chủ http sau đó url http sẽ được gọi và nếu bạn chạy trên https thì https sẽ được gọi là - trộn chúng sẽ là lý do mà bạn tập lệnh có thể không tải.

Với lỗi tập lệnh của bạn, tôi khuyên bạn nên sử dụng Chrome và công cụ dành cho nhà phát triển - điều này sẽ cho phép bạn biết chính xác dòng nào đang cung cấp cho bạn lỗi đó.

+1

+1 Đặc biệt là vì không có 'http: || https:'. Tại sao mọi người lại thêm vào đó? – fncomp

+0

@Josh chỉ định lược đồ URL là cách "đúng" từ quan điểm chuẩn.Url lược đồ ít thực sự là một hack, tận dụng thực tế là tất cả các trình duyệt đều quay trở lại lược đồ trang hiện tại khi không chắc chắn nên sử dụng gì (khám phá gần đây). Điều đó nói rằng tôi sử dụng và ủng hộ các chương trình ít url, nhưng cũng thừa nhận nơi mà các tiêu chuẩn đến từ. Giờ đây, các URL ít chương trình rất phổ biến và hữu ích, chúng có thể trở thành tiêu chuẩn. Nhưng ý định ban đầu là cho tất cả các URL có một lược đồ. Danh sách các lược đồ dài hơn nhiều so với chỉ http/https và các url có thể được sử dụng bên ngoài web. – BenSwayne

+0

Tôi biết các đề án khác, nhưng câu hỏi này nằm trong trình duyệt, vì vậy bất kỳ ai cũng có thể bị lỗi do truy cập 'http' từ một lược đồ' https'? – fncomp

0

Hàm sau tải một tài liệu khác vào phần thân tài liệu. URL của tài liệu mới phải nằm trong cùng một tên miền là http://www.mydomain.com/ trong trường hợp của bạn.

Bạn cần lưu tập lệnh sau dưới dạng tệp .js và đặt tập lệnh vào vị trí đặt quảng cáo.

function load(url) { 
    var req = null; 

    if (window.XMLHttpRequest) { 
     req = new window.XMLHttpRequest(); 
    } 
    else if (window.ActiveXObject) { //fallback 
     try { 
      req = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try { 
       req = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e) { } 
     } 
    } 

    if (req) { 
     req.open("GET", url, false); 
     req.send(null); 
     return req.responseText; 
    } 
} 

document.write(load("http://www.mydomain.com/passback.php"));