Как использовать & ldquo; 'try & rdquo; в R пропустить ошибку в цикле for

Существует решение, но оно не является надежным. См. Отказ от ответственности внизу.

Если вы откроете новое окно, у вас будет доступ к его немодифицированным методам. Я могу представить два способа открыть новое окно: с помощью window.open и в iframe. Iframe менее навязчив, потому что он не будет отвлекать пользователя, открывая новые окна браузера или запуская блокировки всплывающих окон.

// Runs fn with a clean window reference
function getCleanReferences(fn) {
    var iframe = document.createElement('iframe');
    iframe.style.display = 'none';
    document.body.appendChild(iframe);
    var newWindow = iframe.contentWindow;
    iframe.parentNode.removeChild(iframe);
    return fn(newWindow);
}

Некоторые браузеры не хотят удалять iframe. Если вы хотите, чтобы это работало в Safari или Firefox, удалите строку removeChild. Затем вы захотите получить метод getElementsByClassName из нового окна.

var nativeGetElementsByClassName = getCleanReferences(function(newWindow) {
    var getElementsByClassName = newWindow.document.getElementsByClassName;
    return function(className) {
        return getElementsByClassName.call(window.document, className);
    };
});

Это в значительной степени кросс-браузер, за исключением того, что IE не любит getElementsByClassName в режиме quirks или до версии 9 (что у вас мало контроля в букмаркете). Вот jsfiddle: http://jsfiddle.net/theazureshadow/vdqYG/

И если вам интересны мои эксперименты с импортом других методов, взгляните на этот jsfiddle : http://jsfiddle.net/theazureshadow/ccFG3/

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Использование методов из других окон в контексте текущей является опасной неопределенной территорией. Если вы решите использовать этот хрупкий подход, убедитесь, что вы проверяете совместимость с несколькими браузерами. Мои тесты показали значительные различия в том, как различные браузеры рассматривают этот подход. Вы не должны использовать это на производственной площадке, но это может быть хорошо для личного букмарклета. Вероятно, гораздо безопаснее просто включить свою версию любого метода, который вы хотите использовать.

0
задан glorianrvt 27 February 2019 в 17:16
поделиться