Всякий раз, когда я использую querySelectorAll
в Microsoft Edge с псевдоселектором :scope
, эта ошибка появляется в консоли
SCRIPT5022: SCRIPT5022: SyntaxError
Мне было интересно, если есть альтернатива querySelectorAll
, где я использую этот параметр: :scope > * > table
.Я не хочу использовать jQuery для этого.Спасибо.
РЕДАКТИРОВАТЬ:
Я также хотел бы добавить, что querySelector
работает само по себе
Хорошо, вот пример кода:
function pJSON(panel) {
var json = {tables: [], images: [], text: ""};
var tables = Array.from(panel.querySelectorAll(":scope > * > table"));
var images = Array.from(panel.querySelectorAll(":scope > * > img"));
var text = panel.querySelector(":scope > textarea");
tables.forEach(table => {
json["tables"].push(tJSON(table));
});
images.forEach(image => {
json["images"].push(image.outerHTML);
});
if (text) {
json["text"] = text.value;
}
return json;
}
Еще раз отмечу, что он работает во всех браузерах, кроме IE и Microsoft Edge
О, и пример некоторого HTML, который может быть добавлен динамически, это код, который был там, когда я вызывал этот метод:
<div>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<div>
<table style="display: inline-table;">
<tbody>
<tr>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<button style="margin-left: 100px;">x</button>
</td>
</tr>
<tr>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<input type="file" multiple=""><br>
<button>Add Table</button><br>
<textarea placeholder="Write some text"></textarea>
</td>
<td>
<button style="margin-left: 100px;">x</button>
</td>
</tr>
</tbody>
</table>
<button style="margin-left: 100px;">x</button>
</div>
</div>