Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2014, 12:46
Новичок на форуме
Отправить личное сообщение для sasha-js Посмотреть профиль Найти все сообщения от sasha-js
 
Регистрация: 15.07.2014
Сообщений: 3

Вызов функции вложенного файла
Есть html-файл bar.html
Код:
<html>
 <head>
  <script type="text/javascript">
   function f()
   {
    progressbar.value="50";
   }
  </script>
 </head>
 <body>
  <progress id="progressbar" value="10" max="100"></progress>
 </body>
</html>
Есть второй HTML-файл, который включает в себя первый, например через <object>:
Код:
<html>
 <head>
  <script type="text/javascript">
   function f()
   {
    document.getElementById('leftcol').ownerDocument.documentElement.f();
   }
  </script>
 </head>
 <body>
  <object id="leftcol" type="text/html" data="bar.html"></object>
  <input type="button" onclick="f()" value="changeState"/>
 </body>
</html>
Каким образом вызвать функцию вложенного файла??
document.getElementById('leftcol').ownerDocument.d ocumentElement.f(); -- так не работает

Возможно включить html файл другим способом, главное без <iframe>


Заранее спасибо за помощь!
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2014, 13:17
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Во-первых, ownerDocument - это документ "владельца". Т.е.
<object id="leftcol" type="text/html" data="bar.html"></object>
<script>
document.getElementById('leftcol').ownerDocument == document; // true
</script>

Получить документ "bar.html" можно так:
document.getElementById('leftcol').contentDocument

Во-вторых, documentElement - это ссылка на html-элемент. Так что, так и не должно работать.

Попробуй так:
function f() {
    document.getElementById('leftcol').contentDocument.defaultView.f();
}

Последний раз редактировалось Sweet, 15.07.2014 в 13:25.
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2014, 15:16
Новичок на форуме
Отправить личное сообщение для sasha-js Посмотреть профиль Найти все сообщения от sasha-js
 
Регистрация: 15.07.2014
Сообщений: 3

Sweet, спасибо за ответ.

Но document.getElementById('leftcol').contentDocument выдает ошибку:

SecurityError: Failed to read the 'contentDocument' property from 'HTMLObjectElement': Blocked a frame with origin "null" from accessing a cross-origin frame.


Возможно ли реализовать вызов скриптов из внешнего загруженного файла без изменения политик безопасности?
Ответить с цитированием
  #4 (permalink)  
Старый 16.07.2014, 01:41
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от sasha-js
Возможно ли реализовать вызов скриптов из внешнего загруженного файла без изменения политик безопасности?
Если что-то запрещено политикой безопасности, и это можно обойти, не меняя правил политики безопастости, то это дыра безопасности, не?
Если ты это делаешь по протоколу file:, то работать "из коробки" не будет. Может можно как-то подшаманить, я хз.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторный вызов функции TorchTT Общие вопросы Javascript 4 20.03.2014 21:20
Вызов функции из скрытого iframe Beer75 Общие вопросы Javascript 2 05.06.2013 21:36
Два файла, две функции, но с одним именем Janom Общие вопросы Javascript 19 31.01.2013 10:46
Вызов js-функции из определенного файла Ceргей Общие вопросы Javascript 4 23.08.2012 11:44
Вызов функции из файла. Phoenix Общие вопросы Javascript 2 21.11.2007 22:49