2012-01-10 2 views
0

как я могу использовать этот код javascript на веб-странице, которая находится внутри тега iframe html?Как я могу подписать этот код javascript на веб-страницу, показанную в теге iframe html?

window.highlight = function() { 
    var selection = window.getSelection().getRangeAt(0); 
    var selectedText = selection.extractContents(); 
    var span = document.createElement("span"); 
    span.style.backgroundColor = "yellow"; 
    span.appendChild(selectedText); 
    span.onclick = function (ev) { 
     this.parentNode.insertBefore(document.createTextNode(this.innerHTML), this); 
     this.parentNode.removeChild(this); 
    } 
    selection.insertNode(span); 
} 
+0

В случае, если вы не понимаете, если веб-страница принадлежит другому домену, чем ваша главная страница, вы не сможете это сделать. – Jeff

+0

должно быть возможным, потому что я нашел это веб-приложение, которое создано для чего-то похожего, пожалуйста, проверьте это: http://www.awesomehighlighter.com/ –

+0

Если вы проверите эту страницу, вы увидите, что они извлекают iframe контента через прокси-сервер, поэтому каждый кадр имеет тот же домен. –

ответ

1

Если IFrame находится на том же домене, что и родитель, вы можете использовать window.parent.whatever вместо window.whatever и parent.document.whatever вместо document.whatever.

Если iframe НЕ размещен в том же домене, что и родительский, то вы не можете получить к нему доступ, поскольку это то, что называется межсайтовым скриптом (XSS).

+0

, у меня возник вопрос; межсайтовый скриптинг является незаконным? –

+0

нет, просто невозможно по умолчанию в современных браузерах. –

+0

Это мера безопасности, встроенная в практически каждый браузер там с тех пор ... до сих пор. Вы можете, конечно, изменить свой собственный браузер, чтобы он не вел себя так, хотя AFAIK не имеет настроек для его отключения, вам придется изменить исходный код. Или вы можете запрограммировать собственный браузер, который не соответствует стандарту. Но это, очевидно, распространяется только на ВАШ браузер, а не на всех остальных. –