Код прекрасно работает во всех браузерах, изменяя одну строку.
Вместо использования
var frame = document.getElementsByTagName('iframe')[0];
использовать
var frame = document.getElementById("ctl00_ctl00_ContentPlaceHolder1_Options_iframe");
Проблема была в том, что Chrome и IE скрыли iframes, и когда мы используем getElementsByTagName, он возвращает нам массив всех iframes. поэтому мы пытаемся получить доступ к индексу [0], он ссылался на какой-то другой iframe.
Надеюсь, это поможет.
Полный код:
function resizePanel() {
var frame = document.getElementById("ctl00_ctl00_ContentPlaceHolder1_Options_iframe");
if(frame != null) {
var height;
if(self.innerHeight) {
height= self.innerHeight;
}
else if (document.documentElement && (document.documentElement.clientHeight)) {
height = document.documentElement.clientHeight;
}
else if(document.body) {
height = document.body.clientHeight;
}
frame.style.height = height - 165 + 'px'
}};
$(document).ready(function() {
resizePanel();
$(window).resize(function() {
resizePanel();
});
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
resizePanel();
}