Подтвердить что ты не робот

Отображение демонстрации моего CSS на любом веб-сайте

Я разработал небольшой компонент, который можно поместить на любой сайт. Теперь я хочу разработать код, который мог бы продемонстрировать, как мой компонент будет выглядеть на любом веб-сайте.

Итак, человек придет на мою страницу и разместит его URL-адрес, а затем мой код должен включить мой пользовательский JS/CSS в загруженный HTML и отобразить его. Что-то вроде этого.

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

4b9b3361

Ответ 1

В приведенном примере они запрашивают страницу, указанную в параметре querystring url на сервере, а затем выполняют более или менее следующие шаги:

  • В теге <head> они добавляют тег <base href="url" /> к документу. Тег base сделает любые относительные ссылки в документе обработкой значения в атрибуте href в качестве своего корня. Вот как они обходят сломанные css/изображения. (Тег base поддерживается всеми браузерами)
  • В конце документа (IE тег </body>) они вводят javascript, который запускает свои демонстрации.
  • Они обслуживают измененный HTML, указанный в браузере.

Все это довольно просто в реализации. Вы можете использовать регулярные выражения для соответствия тегам <head> и </body> для шагов 1 и 2 соответственно. В зависимости от платформы сервера, как вы на самом деле запрашиваете страницу, она будет меняться, но вот несколько ссылок, которые помогут вам начать:

Ответ 2

Попробуйте bookmarklet.

Создайте кусок javascript, который добавит ваш код на страницу, например:

javascript:(function(){var%20script=document.createElement('script');script.src='http://www.example.org/js/example.js';document.getElementsByTagName('head')[0].appendChild(script);})()

Добавьте его как href ссылки, например:

<a href="javascript:(function(){var%20script=document.createElement('script');script.src='http://www.example.org/js/example.js';document.getElementsByTagName('head')[0].appendChild(script);})()">Link Text Here</a>

Сообщите своим пользователям перетащить ссылку на панель инструментов закладки и нажмите на нее на разных веб-сайтах, чтобы проверить свой код.

Некоторые примеры: http://www.reclaimprivacy.org/, http://www.readability.com/bookmarklets

Ответ 3

Ответ Натана наиболее близок к тому, как мы сделали демонстрационную функцию в WebEngage. Чтобы создать такой демо-функционал, вам нужно создать виджет Javascript, который может быть встроен на сторонние сайты. Ответ syserr0r на создание букмарклета - это самый простой способ сделать это. Мы являемся бэкэндом JAVA, и мы используем HttpClient для получения ответов. Как предложил Натан, мы анализируем ответ, дезинфицируем его и добавляем в ответ виджет Javascript. Код виджетов JS оттуда оттуда отображает вкладку "Обратная связь" и загружает демонстрационный короткий обзор.

Раскрытие информации: Я являюсь соучредителем и генеральным директором в WebEngage.

Ответ 4

Вы не можете сделать это с помощью JQuery из-за ограничений на межсайтовый скриптинг.

Я предлагаю вам написать PHP script, который загружает URL-адрес, указанный пользователем, и включает в себя ваш код виджетов, а затем возвращает его обратно пользователю.

Ответ 5

Я рекомендую использовать букмарклеты. Я создал генератор букмарклетов для добавления ярлыков с поддержкой jQuery на страницу, чтобы упростить разработку.

На странице вы найдете букмарклет суппорта, с которым вы можете столкнуться, просто чтобы показать пример его работы.

Полное раскрытие, это то, что я сделал, я не пытаюсь спамить, поскольку я считаю это актуальным: zbooks

Ответ 6

Вы можете создать страницу iframe, которая загружает свою страницу в iframe и использует javascript для ввода вашего кода в iframe.

Ответ 7

Вот мой подход...

http://jsfiddle.net/L2kEf/

HTML

<iframe src="http://www.bing.com"></iframe>
<div>I am div</div>

CSS

div { background: red; position: absolute; top: 20px; width: 100px; left:20px;}
iframe{width: 100%; height: 500px;}

вы можете добавить javascript/jquery, чтобы вы могли сделать что-то вроде

jQuery//не на 100% уверен, что он будет работать с кросс-браузером, но вы знаете, стоит попробовать.

$('div').click(function (){
    $('iframe').contents().html('changed');///
});

если это не может изменить какое-либо содержимое, вы можете отобразить диалоговое окно, чтобы сказать, что оно нормально работает, если оно было на вашем веб-сайте, а затем используйте подход @syserr0r для пользователей с закладками для получения лучших результатов, поскольку вы предлагаете эти виды услуг, разработчикам, я уверен, что они будут знать о закладках, мой подход будет редко использоваться:), так что надеюсь, что это поможет.

Ответ 8

У меня была проблема сходного характера, и основным препятствием является междоменная политика.

Вы должны попросить пользователя поместить ваш код в <script src="..."> или создать прокси-решение, которое добавит вам код для них.

Я пошел на прокси, и вот мои наблюдения:

  • легко создать базовый прокси-сервер в php - есть несколько php-прокси на sourceforge, и Бен Алман создал простой php-прокси для AJAX. Основываясь на тех, я смог создать php-прокси, правильно изменяя содержимое за один день.
  • после этого я потратил много времени на то, чтобы работать с большим количеством сайтов с проблемами. Вы никогда не сможете создать идеальный прокси.

В качестве альтернативы (если вы не являетесь некоммерческой) вы можете использовать http://www.jmarshall.com/tools/cgiproxy/ и помещать сайт в iframe, а затем делать то, что вы хотите делать с документом iframes, как это происходит в вашем домене благодаря прокси-серверу. Вы можете получить доступ к iframeDOMnode.contentWindow.document, затем и т.д.

Ответ 9

Вы можете создать расширение Crossrider, которое ваши пользователи могут загрузить. Затем просто добавьте это в свой код приложения/расширения:

appAPI.dom.addRemoteJS("http://yourdomain.com/file.js")

Затем ваши пользователи могут загрузить расширение (он работает кросс-браузер для Internet Explorer, Chrome и Firefox), и он загрузит ваш JS-код при каждой загрузке страницы.

Ответ 10

Вы можете получить приблизительное представление о том, как оно будет выглядеть с помощью iframe. Взгляните на эту ссылку для примера.

http://jsfiddle.net/jzaun/5PjRy/

Проблема с этим приложением заключается в том, что вы не можете перемещать свои DIV при прокрутке страницы, они фактически просто плавают над iframe. Нет никакого способа обойти это, поскольку междоменные скрипты не позволят вам получить доступ к документу iframe для отслеживания событий прокрутки.

Единственный другой вариант, который у вас есть для более подходящего примера, - это загрузить страницу со стороны сервера на любом языке сценариев, который вы используете, и загрузить его в iframe (или в div и т.д.), и вы можете использовать javascript все, что вам нужно, поскольку страница идет из вашего домена.

В вашем примере, как будет выглядеть ваш виджет, я предполагаю, что плавание ваших DIV (ов) над iframe даст достаточно идеи.

Обратите внимание, что приведенный вами пример использует метод на стороне сервера, а не метод iframe.

Ответ 11

Я согласен с стратегией букмарклета.

Я поклонник http://bookmarklets.heroku.com/, который позволяет легко создавать букмарклеты, вставлять jQuery и т.д.