| Index: options.js |
| =================================================================== |
| --- a/options.js |
| +++ b/options.js |
| @@ -197,68 +197,75 @@ |
| function loadRecommendations() |
| { |
| - var request = new XMLHttpRequest(); |
| - request.open("GET", "subscriptions.xml"); |
| - request.onload = function() |
| - { |
| - var selectedIndex = 0; |
| - var selectedPrefix = null; |
| - var matchCount = 0; |
| + fetch("subscriptions.xml") |
| + .then(function(response) |
| + { |
| + return response.text(); |
| + }) |
| + .then(function(text) |
| + { |
| + var selectedIndex = 0; |
| + var selectedPrefix = null; |
| + var matchCount = 0; |
| - var list = document.getElementById("subscriptionSelector"); |
| - var elements = request.responseXML.documentElement.getElementsByTagName("subscription"); |
| - for (var i = 0; i < elements.length; i++) |
| - { |
| - var element = elements[i]; |
| - var option = new Option(); |
| - option.text = element.getAttribute("title") + " (" + element.getAttribute("specialization") + ")"; |
| - option._data = { |
| - title: element.getAttribute("title"), |
| - url: element.getAttribute("url"), |
| - homepage: element.getAttribute("homepage") |
| - }; |
| + var list = document.getElementById("subscriptionSelector"); |
| + var doc = new DOMParser().parseFromString(text, "application/xml"); |
| + var elements = doc.documentElement.getElementsByTagName("subscription"); |
| - var prefix = Utils.checkLocalePrefixMatch(element.getAttribute("prefixes")); |
| - if (prefix) |
| + for (var i = 0; i < elements.length; i++) |
| { |
| - option.style.fontWeight = "bold"; |
| - option.style.backgroundColor = "#E0FFE0"; |
| - option.style.color = "#000000"; |
| - if (!selectedPrefix || selectedPrefix.length < prefix.length) |
| + var element = elements[i]; |
| + var option = new Option(); |
| + option.text = element.getAttribute("title") + " (" + |
| + element.getAttribute("specialization") + ")"; |
| + option._data = { |
| + title: element.getAttribute("title"), |
| + url: element.getAttribute("url"), |
| + homepage: element.getAttribute("homepage") |
| + }; |
| + |
| + var prefixes = element.getAttribute("prefixes"); |
| + var prefix = Utils.checkLocalePrefixMatch(prefixes); |
| + if (prefix) |
| { |
| - selectedIndex = i; |
| - selectedPrefix = prefix; |
| - matchCount = 1; |
| - } |
| - else if (selectedPrefix && selectedPrefix.length == prefix.length) |
| - { |
| - matchCount++; |
| - |
| - // If multiple items have a matching prefix of the same length: |
| - // Select one of the items randomly, probability should be the same |
| - // for all items. So we replace the previous match here with |
| - // probability 1/N (N being the number of matches). |
| - if (Math.random() * matchCount < 1) |
| + option.style.fontWeight = "bold"; |
| + option.style.backgroundColor = "#E0FFE0"; |
| + option.style.color = "#000000"; |
| + if (!selectedPrefix || selectedPrefix.length < prefix.length) |
| { |
| selectedIndex = i; |
| selectedPrefix = prefix; |
| + matchCount = 1; |
| + } |
| + else if (selectedPrefix && selectedPrefix.length == prefix.length) |
| + { |
| + matchCount++; |
| + |
| + // If multiple items have a matching prefix of the same length: |
| + // Select one of the items randomly, probability should be the same |
| + // for all items. So we replace the previous match here with |
| + // probability 1/N (N being the number of matches). |
| + if (Math.random() * matchCount < 1) |
| + { |
| + selectedIndex = i; |
| + selectedPrefix = prefix; |
| + } |
| } |
| } |
| + list.appendChild(option); |
| } |
| + |
| + var option = new Option(); |
| + var label = i18n.getMessage("filters_addSubscriptionOther_label"); |
| + option.text = label + "\u2026"; |
| + option._data = null; |
| list.appendChild(option); |
| - } |
| - var option = new Option(); |
| - option.text = i18n.getMessage("filters_addSubscriptionOther_label") + "\u2026"; |
| - option._data = null; |
| - list.appendChild(option); |
| + list.selectedIndex = selectedIndex; |
| - list.selectedIndex = selectedIndex; |
| - |
| - if (delayedSubscriptionSelection) |
| - startSubscriptionSelection.apply(null, delayedSubscriptionSelection); |
| - }; |
| - request.send(null); |
| + if (delayedSubscriptionSelection) |
| + startSubscriptionSelection.apply(null, delayedSubscriptionSelection); |
| + }); |
| } |
| function startSubscriptionSelection(title, url) |