Мы используем специально созданную CMS для электронной коммерции, которая использует:

<a href="javascript:AddToBasket(3471412104801);">Add to Cart</a>

...чтобы добавить товар в корзину (назовем его Сайт А). Мы создаем отдельный сайт (сайт B) для одного из наших продуктов, и мне нужно придумать способ связать кнопку «Заказ» на сайте B, чтобы она вызывала указанную выше функцию javascript после загрузки сайта A, используя этот идентификатор продукта.

Что-то вроде следующего псевдокода:

<a href="http://example.com/success#javascript:AddToBasket(3471412104801);">
    Add To Cart
</a>

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

Я сталкивался с решениями, связанными с «инъекциями», в которых у меня нет большого опыта, но общее мнение кажется негативным, в качестве основных проблем упоминаются проблемы безопасности и взлом. Это может звучать глупо, но оба сайта наши, и мы их контролируем. Если нам нужно что-то добавить на страницу успеха на сайте А, это возможно.

0
tristanojbacon 15 Окт 2014 в 19:59

2 ответа

Один из способов — открыть http://example.com/success в вашей функции AddToBasket():

function AddToBasket(id) {
    window.open('http://example.com/success', '_blank');

    ...
}

Недостатком этого является то, что JavaScript не выполняется после открытия вашей другой страницы, а ваша страница открывается во время выполнения вашего JavaScript.

0
James Donnelly 15 Окт 2014 в 20:03
Однако функция AddToBasket находится на сервере Site A, и мы не можем редактировать этот конкретный JS-файл. Если мы это сделаем, нам придется заплатить большую сумму разработчику, чего мы пытаемся избежать!
 – 
tristanojbacon
15 Окт 2014 в 20:08
Если бы сеть работала таким образом, что мы могли бы связывать людей с другими веб-сайтами и заставлять их запускать свои собственные функции JavaScript, это было бы невероятно небезопасно, и все избегали бы нажимать на гиперссылки. Вам придется изменить код на сайте A. Вы можете разрешить сайту A запускать функцию JavaScript, если, например, присутствует определенный параметр строки запроса, но в противном случае вы не сможете сделать это путем изменений на сайте B. в одиночестве.
 – 
James Donnelly
15 Окт 2014 в 20:09

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

     <a href="fallbackurl" onclick="AddToBasket(3471412104801);">Add to Cart</a>

Когда вы нажмете якорь, он вызовет функцию.

-1
Edgar Pino 15 Окт 2014 в 20:15