2012-06-12 39 views
7

Tôi không phải là lập trình viên, vì vậy tôi xin lỗi trước, nhưng sau khi tìm kiếm trên web tôi không thể tìm thấy câu trả lời.Javascript hoạt động trong Safari nhưng không phải Chrome hoặc Firefox

Tôi đang cố thực hiện tìm kiếm khoảng không quảng cáo từ this website và đặt nó vào tab Facebook. Tôi lấy mã từ trang web và chỉnh sửa đầu trang và chân trang mà tôi không muốn, trong TextEdit. Tôi chỉ đang cố gắng lấy phần tìm kiếm khoảng không quảng cáo.

Khi tôi thử nghiệm nó trong Safari nó dường như làm việc. Tìm kiếm khoảng không quảng cáo xuất hiện và tất cả các nút và bộ lọc hoạt động hoàn hảo và khi tôi đi đến một trang khác, đầu trang và chân trang vẫn biến mất và chỉ tìm kiếm khoảng không quảng cáo ở đó - hoàn hảo.

Tuy nhiên khi được thử nghiệm trong Chrome và Firefox, các nút và bộ lọc không hoạt động và bạn không thể đi qua trang đầu tiên hoặc áp dụng bộ lọc.

Vì vậy, tôi quyết định truy cập trang web (trang đầu tiên của tìm kiếm khoảng không quảng cáo như liên kết ở trên) và lưu mã nguồn vào máy tính để bàn của tôi xem liệu tôi có mở nó trong Chrome hoặc Firefox không nó đã không, không có nút hoặc bộ lọc làm việc, bị mắc kẹt trên trang đầu tiên. Nhưng nó đã làm việc trong Safari.

Điều này có nghĩa là gì? Tôi có nên từ bỏ bây giờ không? Tôi sẽ bao gồm mã nhưng nó là dài nhất mà tôi từng thấy. Tất cả các thử nghiệm của mã tôi đã làm thông qua TextEdit.

chỉnh sửa:
Dưới đây là các lỗi trong Chrome:

của router Lỗi Cú pháp: Bất ngờ thẻ < Chevy.html: 4608 XMLHttpRequest không thể tải http://www.erikschevrolet.com/searchVehicles.ajax. Nguồn gốc null không được cho phép bởi Access-Control-Cho phép Xuất xứ.
Lỗi không bắt buộc: XmlRenderEngine => Lỗi không xác định bundle.js: 1 XMLHttpRequest không thể tải http://www.erikschevrolet.com/searchVehicles.ajax. Nguồn gốc null không được cho phép bởi Access-Control-Cho phép Xuất xứ.
Lỗi không bắt buộc: XmlRenderEngine => Lỗi không xác định bundle.js: 1 XMLHttpRequest không thể tải http://www.erikschevrolet.com/searchVehicles.ajax. Nguồn gốc null không được cho phép bởi Access-Control-Cho phép Xuất xứ.
Lỗi không xác định: XmlRenderEngine => Lỗi không xác định bundle.js: 1

+4

Có lỗi nào trong Chrome và ff không? Nếu có, xin vui lòng bao gồm chúng. Ngoài ra, trang dường như được tạo trên máy chủ. Nếu vậy, sẽ dễ dàng hơn để thực hiện toàn bộ mặt máy chủ bằng cách không bao gồm các tệp tiêu đề, v.v. – tcooc

+2

Không chắc chắn trường hợp sử dụng chính xác của bạn, nhưng hãy cẩn thận rằng những gì bạn đang làm ở đây là hợp pháp. Mã từ trang web đó thuộc sở hữu của "Tổng công ty Hệ thống Chrome" và sẽ là bất hợp pháp để lấy cắp và sử dụng lại mã của họ mà không có sự cho phép của họ. Nếu không, câu hỏi hay :) – jwegner

Trả lời

1

Các cảnh báo này của Chrome không có liên quan ở đây. Lỗi được đưa ra ở trên là về các vấn đề liên quan đến nguồn gốc. Do những điều thực sự xấu xa trong đó truy cập các tài nguyên từ xa từ bên trong Javascript có thể khiến các trình duyệt hiện đại chặn chúng trừ khi được cho phép một cách rõ ràng.

Ví dụ: hầu hết nội dung từ http://example.com không thể truy cập được bằng javascript dưới tên miền http://example.net. Vì bạn đã tải xuống hầu hết các tệp và bạn đang cố gắng chạy chúng cục bộ, nhưng vẫn một số tệp tham chiếu đến các tệp trong miền http://www.erikschevrolet.com, nó không được phép.

AFAIK không có cách nào thực sự đơn giản để tránh vấn đề này; giải pháp an toàn nhất sẽ giúp bạn tải xuống tất cả các tệp đã sử dụng và thay đổi tham chiếu theo cách thủ công thành http://www.erikschevrolet.com với các tham chiếu đến đường dẫn cục bộ của bạn. Ngoài ra, người ta có thể thiết lập các withCredentials giá trị của XMLHttpRequest là true (nhưng kể từ khi bạn không phải là một lập trình viên, bạn có thể thực sự lộn xộn nó lên ...) như thế này (ví dụ từ http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/):

var request = new XMLHttpRequest(); 
var url = 'http://bar.other/resources/credentialed-content/'; 
function callOtherDomain(){ 
    if(request) 
    { 
    request.open('GET', url, true); 
    request.withCredentials = "true"; 
    request.onreadystatechange = handler; 
    request.send(); 
    } 
} 

Và ngay cả điều này có thể không nhận được kết quả mong đợi vì nhiều tệp này có thể được tạo động trên máy chủ và có thể thay đổi.

+0

Cảm ơn bạn! Tôi sẽ xem xét việc thay đổi các tài liệu tham khảo bản thân mình, hoặc tôi sẽ thuê ngoài dự án cho một người biết những gì họ đang làm! –

+1

Nếu bạn hài lòng bởi câu trả lời của tôi, bạn có thể upvote nó và chấp nhận nó? ;) – mgol

+0

Sử dụng JSONP để thực hiện các yêu cầu miền chéo hoặc chỉ cần thực hiện trên máy chủ thay vì trong JS – sciritai

0

Dường như bạn gặp sự cố khi đọc tệp xml hoặc văn bản trong javascript với lược đồ tệp tải cụ thể. nó xảy ra trong các trình duyệt nơi theo yêu cầu của công trình http, ở đây trong trường hợp này bạn có thể thử một cái gì đó giống như làm việc trong javascript,

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

này sẽ hoạt động trên chrome săn firefox cũng cố gắng này.

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