我想發送智商節要求用戶的名冊使用strophe庫。 Strophe爲此提供了一個功能,稱爲sendIQ。試圖發送與Strophe XMPP智商節
我試圖發送IQ節這樣的:
let iq_str = "<iq type='get' id='roster1'><query xmlns='jabber:iq:roster'/></iq>";
let parser = new DOMParser();
let iq = parser.parseFromString(iq_str, "text/xml");
XMPP.conn.sendIQ(iq, onRoster);
然而,與TypeError: e.getAttribute is not a function
錯誤var id = elem.getAttribute('id');
線的strophe的sendIQ功能崩潰,因爲(如果我理解正確),iq
不是一個XML元素對象,而是一個XML文檔對象。
經過一番搜索,我能夠通過這樣來避免碰撞:
let iq_str = "<iq type='get' id='roster1'><query xmlns='jabber:iq:roster'/></iq>";
let parser = new DOMParser();
let iq = parser.parseFromString(iq_str, "text/xml").getElementsByTagName("iq")[0];
XMPP.conn.sendIQ(iq, onRoster);
可是這樣一來,我明明沒有收到任何答覆,因爲我不是在通過iq
指定查詢變量。
我有這樣的感覺,我必須失去一些非常微不足道的東西,但我一直在堅持一段時間。我發現的所有示例都使用jQuery,但我相信必須有一個不使用它的解決方案。
我的壞,'getElementsByTagName'不會返回子元素,因此智商是正確的。問題是'onRoster'回調中的一個錯誤,我沒有注意到。 –