В событии Internet Explorer 8, переданном как параметр, может быть null, поэтому вам нужно получить доступ к событию другим способом:
В файле frame.html:
window.onmessage = function(event) {
var evt = evt || window.event;
evt.source.postMessage('Message from iFrame', evt.origin);
};
На main.html:
window.onmessage = function(event) {
var evt = evt || window.event;
alert(evt.data);
};
Событие запускается так же, как и Rob W:
document.getElementById('frameId').contentWindow.postMessage('message','*');
Не существует встроенного метода, но эта версия работает при большем количестве обстоятельств:
with cte (num, dollar) as (
select 1, cast(1.45 as decimal(12,2))
union all
select num + 1, cast(dollar + 1.00 as decimal(12,2))
from cte
where num < 20
)
select cte.num, cte.dollar,
(case when count(*) over (order by cte.num ROWS 3 PRECEDING) = 3
then avg(cte.dollar) over (order by cte.num ROWS 3 PRECEDING)
end) as ThreeMonthAvg,
(case when count(*) over (order by cte.num ROWS 6 PRECEDING) = 6
then avg(cte.dollar) over (order by cte.num ROWS 6 PRECEDING)
end) as SixMonthAvg
from cte;
Это фактически подсчитывает строки, входящие в среднее значение, а не в зависимости от конкретных числовых значений.