#javascript #amazon #velo
#javascript #velo #amazonads
Вопрос:
Я хочу иметь виджет Amazon Search ads на странице блога.
Когда я использую сгенерированный Amazon код непосредственно в разделе «код» «HTML iFrame», он работает отлично.
Код выглядит следующим образом:
<script type="text/javascript">
amzn_assoc_placement = "adunit0";
amzn_assoc_search_bar = "true";
amzn_assoc_tracking_id = "atmarhoreca-20";
amzn_assoc_search_bar_position = "bottom";
amzn_assoc_ad_mode = "search";
amzn_assoc_ad_type = "smart";
amzn_assoc_marketplace = "amazon";
amzn_assoc_region = "US";
amzn_assoc_title = "Shop Related Products";
amzn_assoc_default_search_phrase = "product";
amzn_assoc_default_category = "All";
amzn_assoc_linkid = "ae6ccb4140ba25fbef6d6ba67d36b98d";
</script>
<script src="//z-na.amazon-adsystem.com/widgets/onejs?MarketPlace=US"></script>
В corvid я получаю заголовок сообщения в блоге и отправляю его в HTML-элемент с помощью:
$w.onReady(function () {
loadSearchAds();
});
async function loadSearchAds() {
let getPostData = await $w('#post1').getPost();
let postTitle = getPostData.title;
$w('#html2').postMessage(postTitle);
}
Я должен отправить сообщение элементу HTML, чтобы установить переменную «amzn_assoc_default_search_phrase» в качестве заголовка сообщения, чтобы показать результаты поиска, связанные с блогом.
Я не так хорош в JavaScript. Попробовал следующий фрагмент HTML, но не смог справиться:
<script type="text/javascript">
window.onmessage = (event) => {
if (event.data) {
searchPhrase = event.data;
} else {
searchPhrase = "horeca";
}
};
amzn_assoc_placement = "adunit0";
amzn_assoc_search_bar = "true";
amzn_assoc_tracking_id = "atmarhoreca-20";
amzn_assoc_search_bar_position = "bottom";
amzn_assoc_ad_mode = "search";
amzn_assoc_ad_type = "smart";
amzn_assoc_marketplace = "amazon";
amzn_assoc_region = "US";
amzn_assoc_title = "Shop Related Products";
amzn_assoc_default_search_phrase = searchPhrase;
amzn_assoc_default_category = "All";
amzn_assoc_linkid = "ae6ccb4140ba25fbef6d6ba67d36b98d";
</script>
<script src="//z-na.amazon-adsystem.com/widgets/onejs?MarketPlace=US"></script>
Надеюсь, это понятно. Любая помощь будет оценена.
Спасибо.
Ответ №1:
Есть решение, к которому я пришел после стольких попыток.
Я понял, что когда страница загружается, await $w('#post1').getPost();
загружается медленнее, чем $w("#html2").postMessage(searchCommand);
.
Поэтому я решил дать странице некоторое время, чтобы понять, каково ее название.
1 секунды недостаточно, но 2 секунд достаточно. Я жду 2 секунды, затем отправляю заголовок сообщения в элемент HTML.
Код Corvid выглядит следующим образом:
$w.onReady(function () {
loadSearchAds();
});
async function loadSearchAds() {
let getPostData = await $w('#post1').getPost();
let postTitle = getPostData.title;
let searchCommand = "pageRequests<:>" postTitle;
setTimeout(function () {
$w("#html2").postMessage(searchCommand);
}, 2000);
}
Кроме того, другой проблемой была часть HTML. В коде, сгенерированном Amazon, есть 2 тега, один из которых — text / javascript, другой — src. Когда я присваиваю значение переменной в первом теге, второй тег использует переменную как есть перед назначением новой переменной.
Итак, я перешел к URL-адресу, который записан в, я скопировал туда все (около 25 тыс. символов) и вставил в первый тег, после присвоения переменных.
<script type="text/javascript">
window.onmessage = (event) => {
var splittedEventData = event.data.split("<:>");
if (splittedEventData[0] == "pageRequests") {
amzn_assoc_placement = "adunit0";
amzn_assoc_search_bar = "true";
amzn_assoc_tracking_id = "atmarhoreca-20";
amzn_assoc_search_bar_position = "bottom";
amzn_assoc_ad_mode = "search";
amzn_assoc_ad_type = "smart";
amzn_assoc_marketplace = "amazon";
amzn_assoc_region = "US";
amzn_assoc_title = "Shop Related Products";
amzn_assoc_default_search_phrase = splittedEventData[1];
amzn_assoc_default_category = "All";
amzn_assoc_linkid = "d241147a833a91225d67c0372ac8df2d";
[!] HERE COMES THE SNIPPET IN AMAZON URL. I DIDN'T COPY EVERYTHING HERE IN FORUM BECAUSE AMAZON CODE SNIPPET IS ABOUT 25000 CHARACTERS [!]
}
};
</script>
Итак, теперь на страницах сообщений в блоге есть iFrame, который выполняет поиск на Amazon по названию сообщения в блоге и показывает результат.
Я думаю, мне все еще необходимо иметь более эффективный способ.