Поведение, которое вы видите, предназначено и существует по соображениям безопасности. Вы не хотели бы, чтобы сторонний скрипт вносил какие-либо изменения в вашу страницу, так как он может быть сильно использован.
Вместо этого дайте своим пользователям фрагмент JavaScript для вставки на их страницу.
<script>
// do stuff here
</script>
Обратите внимание, что внутри этого фрагмента вы можете динамически создавать тег сценария, устанавливать атрибут src и загружать реальный JavaScript. Этот фрагмент, который ваши пользователи вставляют на свою страницу, имеет доступ ко всему DOM, но загруженный извне скрипт - нет.
Вот пример виджета профиля, который Twitter выдает для встраивания в веб-страницы:
<!-- external js, can't access or change the DOM -->
<script src="http://widgets.twimg.com/j/2/widget.js"></script>
<!-- local js, does that -->
<script>
new TWTR.Widget({
version: 2,
..
..
}).render().setUser('hulu').start();
</script>
Первый скрипт-тег загружает библиотеку, а второй, который фактически манипулирует страницей, добавляется как код напрямую.