Я хочу создать значок javascript, который отображает список ссылок. Мы размещаем javascript в нашем домене. Другие сайты могут разместить на своей странице пустой тег div, а внизу ссылку на наш javascript, который будет отображать содержимое тега div. Как реализовать что-то подобное?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


как вы говорите, пусть они поместят div внизу своей страницы:
<div id = "mywidget"></div>
затем дайте им ссылку на ваш javascript:
<script type = "text/javascript" src = "http://yourdomain.com/mywidget.js"></script>
затем попросите их изменить свой тег тела или загрузить, чтобы вызвать ваш скрипт
<script type = "text/javascript">
document.body.onload = loadYourWidget();
</script>
вы можете использовать «document.getElementById ('mywidget')», чтобы получить div, упомянутый в моем ответе, и просто заполнить его, как указано, любыми ссылками, которые вы хотите.
Как сказал @Owen, за исключением того, почему бы не создать свой javascript, чтобы
<script type = "text/javascript" src = "http://yourdomain.com/mywidget.js"></script>
выполняет работу по заполнению <div id = "mywidget"></div> самостоятельно, тем самым избавляя их от необходимости вызывать loadYourWidget () из своей загрузки DOM, если вы включаете тег скрипта сразу после div mywidget в исходный код html. На самом деле это не лучшая практика, но я думаю, что это сработает.
Пример вашего кода mywidget.js:
document.getElementById('mywidget').innerHTML = "<a href=''>LinkOne</a> <a href=''>LinkTwo</a>";
Я бы дал тегу SCRIPT идентификатор и заменил сам тег сценария содержимым DIV +, сделав так, чтобы они включали только одну строку кода. Что-то вроде следующего:
<script id = "my-script" src = "http://example.com/my-script.js"></script>
В своем скрипте вы можете одним махом поменять тег SCRIPT на свой DIV, например:
var scriptTag, myDiv;
scriptTag = document.getElementById('my-script');
myDiv = document.createElement('DIV');
myDiv.innerHTML = '<p>Wow, cool!</p>';
scriptTag.parentNode.replaceChild(myDiv, scriptTag);
Вам не нужен начальный div для заполнения списка ссылок.
Просто создайте div с помощью document.write в том месте, где размещен скрипт.
<script type = "text/javascript" src = "http://domain.com/badge.js"></script>
... и в вашем скрипте:
var links = [
'<a href = "#">One</a>',
'<a href = "#">Two</a>',
'<a href = "#">Three</a>'
];
document.write("<div>" + links.join(", ") + "</div>");
Еще одно преимущество заключается в том, что вам не нужно ждать полной загрузки страницы.
Мне потребовалось некоторое время, чтобы найти этот ответ на Stackexchange, потому что я использовал другие условия поиска. Я считаю, что ссылка предлагает более полный ответ, чем уже приведенные здесь:
Как создать веб-виджет (используя jQuery)
Это покрывает:
- ensure the widget’s code doesn’t accidentally mess up with the rest of the page,
- dynamically load external CSS and JavaScript files,
- bypass browsers’ single-origin policy using JSONP.
Не могли бы вы подробнее рассказать о том, как выглядит loadYourWidget (). Как вы ссылаетесь на div?