Typescript видит, что первым параметром является number[]
, и это исправляет T
, а затем вы получаете ошибку для второго. В то время как в теории T
можно сделать вывод о string | number
, я бы сказал, что текущее поведение, как правило, хорошо, но более вероятно, что предполагаемые союзы приведут к неожиданным ошибкам в других местах.
Вы можете заставить компилятор принять требуемый вызов, если вы заставите компилятор рассматривать все аргументы как единое целое, а не индивидуально, используя кортежи в параметрах отдыха: тип кортежа для примера вызова ([number[], string[]]
, поэтому для получения типа элемента мы используем T[number][number]
(который будет string | number
для вызова примера), а возврат к массиву массивов с помощью [][]
[ 1112]
document.getElementById("iframeId").src = "Your URL here."
Набор кадров возвращает объекты окна (или эквивалент). Вы хотите быть нацеленными на объект документа; попытайтесь делать:
window.frames['iframeId'].document.location.href =....
Это работает в IE, FF, Safari, и так далее, таким образом, никакая потребность в грязном определении браузера также.
nb. IIRC, который ссылки набора кадров называют в IE, идентификаторе в других браузерах, таким образом, Вы должны и назвать и идентификационный атрибут на - но у Вас уже есть это, таким образом, никакие заботы!
Просто используйте следующий код.
var iframe = document.getElementById('IFRAME ID'); // just for clarity
iframe .src = 'URL here';
Он должен работать с каждым браузером.
document.getElementById('MsgBoxWindow').getAttribute('src')
работает в Internet Explorer, Firefox, Safari, чтобы получить исходный URL.
document.getElementById('MsgBoxWindow').setAttribute('src', urlwithinthedomain)
работает в одних и тех же браузерах для установки исходного URL-адреса.
Однако перед вызовом iframe необходимо загрузить. Не размещайте его перед iframe при вызове кода JavaScript. Вы можете разместить оба после iframe, если вы вызываете его сразу после загрузки страницы, и он будет работать так, как ожидалось.
Поскольку вы использовали тег jquery, это может оказаться полезным.
function resizeIframe(height) {
height = parseInt(height);
height += 100;
$('iframe#youriframeID').attr('height', height);
}
В случае, если вы делаете кроссбраузерное изменение размера, посмотрите эту статью, в которой объясняется, как автоматически изменить высоту на основе содержимого iframe. Вам понадобится доступ к html-файлу сайта с iframe. Изменение размера iframe на основе содержимого
Я пробовал getElementById
и множество других вариантов. Ни один не сработал одинаково ни в IE, ни в FF, ни в Opera, ни в Chrome.
Этот вариант работает хорошо: parent.frames.IFRAME_ID.location.href = '/';
Вы можете изменить src iframe двумя способами:
Оба метода требуют полной загрузки iFrame перед попыткой изменения.
Изменение href работает во всех браузерах, включая IE5. Вы можете обратиться к кадру
, обратившись к окну содержимого элемента:
var myFrame = document.getElementById ('myFrame'); myFrames.contentWindow.location = ' http://example.com ';
Ссылаясь на ИМЯ элемента:
var myFrame = window.frames.myFrame; // где myFrame - это ИМЯ элемента myFrame.location = ' http://example.com ';
Изменение src, как сказано выше, путем выбора элемента и изменения src - но это должен быть дочерний элемент, а не потомок элемент.
var myFrame = document.getElementById('myFrame');
myFrame.src = 'http://example.com'