विफल होने की संभावना: https के माध्यम से निम्नलिखित डोमेन पार किया जा रहा है। मैं ईमानदारी से नहीं सोचता कि यह मुद्दा है क्योंकि आईई 10, क्रोम और एफएफ में सब ठीक काम करता है। मेरा अनुमान है कि यह IE8 में XDomainRequest ऑब्जेक्ट भिन्नता हो सकता है? हालांकि यकीन नहीं है।सॉकेट.आईओ और आईई 8 - जेसनपी-मतदान कनेक्शन हमेशा
sendLoginRequest
विधि नीचे दी गई विधि है। अन्य सभी सहायक कोड भी नीचे प्रदान किए जाते हैं।
यह सब बहुत आसान है, लेकिन यह सुनिश्चित नहीं है कि IE8 ऐसा क्यों विफल रहता है।
function WrappedSocket(data, session_string) {
var clientSocket = io.connect('https://xxxxxxxx/socketio', { query: "session=" + encodeURIComponent(session_string), transports: ['jsonp-polling'] });
clientSocket.socket.on("connect", function() { console.log("CONNECT_SUCCEED"); });
clientSocket.socket.on("connect_failed", function() { console.log("CONNECT_FAILED"); });
clientSocket.socket.on("reconnect_failed", function() { console.log("RECONNECT_FAILED"); });
clientSocket.socket.on("error", function (eobj) { console.log("Socket error " + eobj); });
console.log("Made a socket that is talking");
}
var my_socket;
function set_up_socket(data, sessionString) {
setSession(data.responseText);
my_socket = new WrappedSocket(data, sessionString);
my_socket.socket.emit("message", "Howdy!");
}
function sendLoginRequest(loginCode, nextRequest) {
var xhr = createCORSRequest('POST', 'https://xxxxx/login', false);
var sessionString = 'xxxx';
if ("withCredentials" in xhr) {
xhr.addEventListener("load", function() {
set_up_socket(this, sessionString);
}, false);
}
else {
xhr.onload = function() {
set_up_socket(this, sessionString);
};
}
xhr.send();
}
function createCORSRequest(method, url, onload) {
xhrObj = new XMLHttpRequest();
if ("withCredentials" in xhrObj) {
// Check if the XMLHttpRequest object has a "withCredentials" property.
// "withCredentials" only exists on XMLHTTPRequest2 objects.
if (onload) {
xhrObj.addEventListener("load", onload, false);
}
xhrObj.open(method, url, true);
xhrObj.withCredentials = true;
} else if (typeof XDomainRequest != "undefined") {
// Otherwise, check if XDomainRequest.
// XDomainRequest only exists in IE, and is IE's way of making CORS requests.
xhrObj = new XDomainRequest();
xhrObj.open(method, url);
if (onload) {
xhrObj.onload = onload;
}
} else {
// Otherwise, CORS is not supported by the browser.
xhrObj = null;
}
return xhrObj;
}
त्रुटियाँ मैं दोनों कंसोल में देख रहा हूँ और फ़िडलर मतदान तथ्य होने वाली है, लेकिन एक ही विफलताओं रखने प्रत्येक पोल पर होते हैं:
LOG:CONNECT_FAILED
'f.parentNode' is null or not an object
'f.parentNode' is null or not an object
LOG:CONNECT_FAILED
'f.parentNode' is null or not an object
'f.parentNode' is null or not an object
LOG:CONNECT_FAILED
'f.parentNode' is null or not an object
'f.parentNode' is null or not an object
LOG:CONNECT_FAILED
'f.parentNode' is null or not an object
'f.parentNode' is null or not an object
LOG:CONNECT_FAILED
'f.parentNode' is null or not an object
'f.parentNode' is null or not an object
LOG:CONNECT_FAILED
'f.parentNode' is null or not an object
'f.parentNode' is null or not an object
........ ....
फिर (आप अंदाजा हो, इस अधिक से अधिक यह चुनाव के रूप में होता है।)
, आप प्रत्येक अनुरोध च देख सकते हैं एक के बाद एक के माध्यम से iring, सर्वर से सभी 200 प्रतिक्रियाओं, लेकिन सभी परिणाम conNECT_FAILED और जेएस त्रुटियों socket.io.js फ़ाइल से।
आखिरकार, क्लाइंट पर socket.io.js फ़ाइल से कोड है जो कंसोल स्क्रीन शॉट में ऊपर देखी गई त्रुटियों को तोड़ रहा है ("f.parentNode शून्य या ऑब्जेक्ट नहीं है")। मैं समझता हूं कि ऑब्जेक्ट शून्य है, जो मुझे नहीं मिलता है वह क्यों शून्य है।
........
if (this.isXDomain() && !io.util.ua.hasCORS) {
var insertAt = document.getElementsByTagName('script')[0]
, script = document.createElement('script');
script.src = url + '&jsonp=' + io.j.length;
insertAt.parentNode.insertBefore(script, insertAt);
io.j.push(function (data) {
complete(data);
script.parentNode.removeChild(script); // *** BREAKS HERE!! ***
});
.........
यह ऐसा लगता है कि मेरी समस्या की शुरुआत कटऑफ थी। इस मुद्दे का एक अच्छा विवरण था। अनिवार्य रूप से जो कोड मैंने प्रदान किया है वह एक साधारण सॉकेट है। जेएसपीपी-मतदान का उपयोग करके कनेक्ट है। आईई 8 यह उन सभी विवरणों के साथ काम नहीं कर रहा है जिन्हें मैंने पहले ही वर्णित किया है। तलाश के लिए धन्यवाद। –
क्या आपने आईई 9 में भी कोशिश की है? यदि हां कृपया एचटीएमएल कोड के साथ भी जवाब दें, हेडर, डॉक्ट टाइप, सभी हिस्सों, शरीर के खुले टैग के साथ। और फिर आप वास्तविक सामग्री बदल सकते हैं। यदि आप एक पहेली बना सकते हैं जो बहुत अच्छा होगा। – MarmiK
आईई 8 का समर्थन करता है '.addEventListener() 'मुझे पता है कि ओपेरा का उपयोग नहीं किया गया है या नहीं किया गया है, आपको वास्तविक घटना का उपयोग करना था। i.e. '.load()' –