Преждевременная оптимизация - это корень всего зла. Минусовое повышение эффективности может быть важным, но только пока вы не доказали, что вы в них нуждаетесь.
Независимо от вашего языка: функция определяется один раз, но имеет тенденцию использоваться в любом количестве мест. Наличие постоянного типа возврата (не говоря уже о документальных предварительных и постконфиденциальных условиях) означает, что вам нужно больше усилий, чтобы определить функцию, но вы значительно упростите использование этой функции. Угадайте, могут ли одноразовые расходы перевешивать повторяющиеся сбережения ...?
Если у вас нет контроля над фрейм-сайтом, вы не можете обойти междоменную политику.
Если у вас есть контроль над обоими сайтами, вы можете использовать postMessage
для передачи данных в разных доменах. Очень простой пример:
// framed.htm:
window.onmessage = function(event) {
event.source.postMessage(document.body.innerHTML, event.origin);
};
// Main page:
window.onmessage = function(event) {
alert(event.data);
};
// Trigger:
// <iframe id="myframe" src="framed.htm"></iframe>
document.getElementById('myframe').contentWindow.postMessage('','*');
В событии 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','*');
$(window).on('message', evt=>evt.originalEvent.data //...
– chiliNUT 5 April 2017 в 23:34