2017-02-02 5 views
0

Я хочу собрать url (var name is 'url) веб-страницы в переменную в расширении chrome вместе с несколькими пользовательскими вводами в текстовых вводах и отправить ее на удаленный php-скрипт для обработки в sql база данных. Я использую AJAX для подключения к удаленному серверу. Popup.html содержит простую форму для пользовательского интерфейса, а popup.js собирает переменные и делает соединение AJAX. Если я использую url = document.location.href, я получаю URL-адрес popup.html, а не URL-адрес страницы, который я хочу обработать. Я попытался использовать chrome.tabs.query(), чтобы получить url lastFocusedWindow - скрипт ниже. Ничего не произошло! Похоже, что было бы просто получить lastFocusedWindow url, но это приводит к сбою скрипта. Функция manifest.json устанавливает «вкладки», https://ajax.googleapis.com/ и IP-адрес удаленного сервера (в настоящее время в локальной сети) в разрешениях. В popup.html есть интерфейс для описания и некоторые теги. (Кстати ответ также не работает, но на данный момент я не против!)Почему это хромовое расширение не работает?

//declare variables to be used globally 
var url; 

// Get the HTTP Object 
function getHTTPObject(){ 
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); 
else if (window.XMLHttpRequest) return new XMLHttpRequest(); 
else { 
alert("Your browser does not support AJAX."); 
    return null; 
} 
// Change the value of the outputText field THIS PART IS NOT WORKING YET 
function setOutput(){ 
if(httpObject.readyState == 4){ 
    //document.getElementById('outputText').value = httpObject.responseText; 
"Bookmark added to db" = httpObject.responseText; // does this work?  
} 
} 
//put URL tab function here 
chrome.tabs.query(
{"active": true, "lastFocusedWindow": true}, 
    function (tabs) 
    { 
     var url = tabs[0].url; //may need to put 'var' in front of 'url' 
    } 
); 
// Implement business logic  
function doWork(){  
    httpObject = getHTTPObject(); 
if (httpObject != null) { 
//get url? THIS IS OUTSTANDING - url defined from chrome.tabs.query? 
description = document.getElementById('description').value; 
tag1 = document.getElementById('tag1').value; 
tag2 = document.getElementById('tag2').value; 
tag3 = document.getElementById('tag3').value; 
tag4 = document.getElementById('tag4').value; 
    httpObject.open("GET", "http://192.168.1.90/working/ajax.php?url="+url+"&description="+description+"&tag1="+tag1+"&tag2="+tag2+"&tag3="+tag3+"&tag4="+tag4, true); 
    httpObject.send(null); 
    httpObject.onreadystatechange = setOutput(); //THIS PART IS NOT WORKING 
finalString = httpObject.responseText; //NOT WORKING 
return finalString; //not working 
} //close if 
} //close doWork function 
var httpObject = null; 
var url = null; 
var description = null; 
var tag1 = null; 
var tag2 = null; 
var tag3 = null; 
var tag4 = null;  
// listens for button click on popup.html 
document.addEventListener('DOMContentLoaded', function() { 
document.querySelector('button').addEventListener('click', doWork); 
}); 

ответ

1

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

javascript:(function(){location.href='http://[ipaddress]/bookmarklet.php?url='+encodeURIComponent(location.href)+'&description='+encodeURIComponent(document.title)})() 
Смежные вопросы