Amazon、Etsy、および JCrew からの情報を解析し、Rails で構築されたウィッシュリスト アプリケーションに送信するブックマークレット アプリを作成しようとしています。JavaScript ファイルを DOM にロードするブックマーク ボタンの作成には成功しましたが、正しく実行されず、データがアプリに渡されていないようです。または、私のJavaScriptに問題があるのかもしれません。誰かが私が間違っていることを理解するのを手伝ってくれますか? 以下にjsファイルを含めました。
function() {
function get_amazon_product_info()
{
var title_span = document.getElementById("btAsinTitle");
var title = title_span.innerText;
var image_tag = document.getElementById("main-image");
var image = image_tag.getAttribute("src");
var price_span = document.getElementById("actualPriceValue");
var price = price_span.innerText;
var product_info = {
title: title,
image: image,
price: price
}
return product_info
}
function get_etsy_product_info()
{
var title_span = document.getElementById("item-title");
var title = title_span.innerText;
var image_div = document.getElementById("fullimage_link1");
var image_tag = image_div.getElementsByTagName("img");
var image = image_tag[0].getAttribute("src");
var price_div = document.getElementsByClassName("item-price");
var price_span = price_div[0].getElementsByClassName("currency-value")
var price = price_span[0].innerText;
var product_info = {
title: title,
image: image,
price: price
}
return product_info
}
function get_jcrew_product_info()
{
var title_span = document.getElementById("pdp-title");
var title = title_span.innerText;
var image_div = document.getElementsByClassName("prod_main_img");
var image_tag = image_div[0].getElementsByTagName("img");
var image = image_tag[0].getAttribute("src");
//lame implementation -- need to be able to determine which radio button is checked. Finish later!
var price_div = document.getElementsByClassName("pdp-shapes");
var price_span = price_div[0].getElementsByClassName("price")
var price = price_span[0].innerText;
var product_info = {
title: title,
image: image,
price: price
}
return product_info
}
function determine_params()
{
domain = document.domain;
if (domain == 'www.amazon.com')
{
get_amazon_product_info();
}
else if (domain == 'www.etsy.com')
{
get_etsy_product_info();
}
else if (domain == 'www.jcrew.com')
{
get_jcrew_product_info();
}
}
function send_data(product_info)
{
var link_url = document.URL;
var http = new XMLHttpRequest();
var url = "http://max-miller.local:3000/add_product";
var params = "title=" + product_info[title] + "&image=" + product_info[image] + "&price=" + product_info[price] + "&link_url=" + link_url;
http.open("POST", url , true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
}
http.send(params);
}
determine_params();
send_data(product_info);
}