Можно ли загрузить удаленный JavaScript, который использует локальные ресурсы (по отношению к себе)? - PullRequest
0 голосов
/ 16 мая 2019

Я хочу, чтобы веб-страница выполняла удаленно размещенный сценарий js. Скрипт использует image-assets в директории скрипта own . Можно ли это сделать, используя в скрипте только относительные пути к файлам?

При удаленном запуске относительный путь к файлу интерпретируется как относительный к файлу веб-страницы, а не как к самому удаленному сценарию.

Я бы хотел справиться с этим, не изменяя скрипт для использования абсолютных путей, потому что он предназначен для транспортабельности. Веб-страница - это просто витрина для проекта. Возможно ли это сделать в HTML?

В частности, у меня есть файл javascript, обслуживаемый страницами github, например:

https://user.github.io/repo/script.js

, который использует некоторые активы изображения, расположенные в этом репо, например:

https://user.github.io/repo/assets/image.png

Скрипт использует локальные пути для загрузки своих активов, например:

imgBird = loadImage('assets/bird.png');

Это не работает, когда скрипт загружается удаленно, потому что скрипт ищет в каталоге веб-страницы assets/bird.png, а не в удаленном ресурсе.

Источник HTML в настоящее время использует следующее для запуска сценария:

<script src="https://user.github.io/repo/script.js">

Существует аналогичная проблема , но ответ основан на сценариях. Я не хочу изменять работу скрипта, потому что он предназначен для сценариев вводного уровня и прост для понимания.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Самый простой способ - отредактировать скрипт.Добавьте переменную hostname и затем добавьте ее в путь

const hostname = 'https://user.github.io/repo/'

imgBird = loadImage(`${hostname}assets/bird.png`);

И затем вы можете просто изменить переменную hostname позже на другую, когда вы будете перемещать проект

0 голосов
/ 16 мая 2019

Нет. Пути относятся к странице, содержащей тег сценария, а не к самому сценарию. Для правильной работы скрипта необходимо знать URL-адрес /assets.

...