Вы работаете под предположением, что целочисленное переполнение всегда является нежелательным поведением.
Иногда целочисленное переполнение является желаемым поведением. Одним примером, который я видел, является представление абсолютного значения заголовка как число фиксированной точки. Учитывая неподписанный интервал, 0 0 или 360 градусов, и макс. целое число без знака на 32 бита (0xffffffff) является самым большим значением чуть ниже 360 градусов.
int main()
{
uint32_t shipsHeadingInDegrees= 0;
// Rotate by a bunch of degrees
shipsHeadingInDegrees += 0x80000000; // 180 degrees
shipsHeadingInDegrees += 0x80000000; // another 180 degrees, overflows
shipsHeadingInDegrees += 0x80000000; // another 180 degrees
// Ships heading now will be 180 degrees
cout << "Ships Heading Is" << (double(shipsHeadingInDegrees) / double(0xffffffff)) * 360.0 << std::endl;
}
существуют, вероятно, другие ситуации, где переполнение приемлемо, подобно этому примеру.
Вы можете как-то попробовать следующее:
Созданное окно:
window.onunload = function (e) {
opener.somefunction(); //or
opener.document.getElementById('someid').innerHTML = 'update content of parent window';
};
Родительское окно:
window.open('Spawn.htm','');
window.somefunction = function(){
}
Вы не должны делать это с родительским элементом, иначе opener.somefunction () не будет работать, выполнение window.somefunction делает некоторые функции общедоступными:
function somefunction(){
}
Возможно, вы захотите использовать событие « onbeforeunload ». Это позволит вам вызвать функцию в родительском окне из дочернего окна непосредственно перед закрытием дочернего окна.
Вероятно, что-то вроде этого:
window.onbeforeunload = function (e) {
window.parent.functonToCallBeforeThisWindowCloses();
};