Клиентский JavaScript 1.3

         

В это примере имеются три


В это примере имеются три страницы в наборе фрэймов/frameset. Файл containerAccess.html определяет этот набор фрэймов и вызывает пользовательскую функцию, когда набор фрэймов загружен. Одна страница, secureContainer.html, содержит маркированный скрипт и экспортирует функцию. Другая страница, access.html, импортирует экспортируемую функцию и вызывает её.
Поскольку этот пример экспортирует функцию, которая не включает или не требует расширенных привилегий, Вы можете экспортировать функцию, которая включает привилегии. Если Вы это делаете, Вы должны быть предельно осторожны, чтобы случайно не дать доступ хакеру. Дополнительно см. "Будьте Осторожны с Тем, Что Экспортируете".
Файл containerAccess.html содержит следующий код:
<HTML>
<FRAMESET NAME=myframes ROWS="50%,*" onLoad="inner.myOnLoad()">
<FRAME NAME=inner SRC="access.html">
<FRAME NAME=secureContainer SRC="secureContainer.html">
</FRAMESET>
</HTML> Файл secureContainer.html содержит следующий код:
<HTML>
This page defines a variable and two functions.
Only one function, publicFunction, is exported.
<BR><SCRIPT ARCHIVE="secureContainer.jar" LANGUAGE="JavaScript1.2" ID="a">function privateFunction() {
return 7;
}var privateVariable = 23;function publicFunction() {
   return 34;
}
export publicFunction;netscape.security.PrivilegeManager.enablePrivilege(
   "UniversalBrowserRead");
document.write("This page is at " + history[0]);// привилегии отменяются автоматически при окончании работы скрипта
</SCRIPT>
</HTML> Файл access.html содержит следующий код:
<HTML>
This page attempts to access an exported function from a signed
container. The access should succeed.<SCRIPT LANGUAGE="JavaScript1.2">function myOnLoad() {
   var ctnr = top.frames.secureContainer;
   import ctnr.publicFunction;
   alert("value is " + publicFunction());
}</SCRIPT>
</HTML>

Содержание раздела