2016-06-14 42 views
0

觀察到的行爲使用腳本更改網站的元素?

我正在使用一個網站,顯示頁面上的位置。

示例:舊金山,CA \奧蘭多,佛羅里達\等

就像上面的例子中文字的位置是靜態的 並沒有做任何事情。

Static Location Text

<span class="userinfo2015-basics-asl-location">Orlando, FL</span> 

帶來更多生活的頁面和位置添加功能,我安裝的GreaseMonkey允許用戶創建修改一個頁面的功能腳本。不幸的是,這個腳本已經過時了,並沒有奏效。但代碼似乎在正確的軌道上。

var locE = document.getElementById('span.userinfo2015-basic-asl-location'); 
var location = locE.textContent; 

var newSrc = "https://www.google.com/maps/place/"+location; 
var link = document.createElement('a'); 
link.setAttribute("href",newSrc); 
link.setAttribute("target","_blank"); 
link.innerHTML = location; 
locE.parentNode.replaceChild(link,locE); 

預期行爲

的腳本的GreaseMonkey會讓您在上面看到成重定向到谷歌地圖的鏈接的靜態位置。

有關資料

使用Greasemonkey的3.8版

使用Firefox瀏覽器版本47.0

+0

推薦您閱讀http://stackoverflow.com/help/mcve以獲取有關如何詢問此類問題的詳細信息。歡迎來到Stack Overflow! –

+0

不知道你問什麼問題的主要部分是關於greasemonkey的主題而不是確切的問題 順便說一下,span是使用一個類,你正在做的doucment.getElementById,這是錯誤的。此外還有錯字在類名稱。檢查此jsfiddle並確認它是否工作正常 https://jsfiddle.net/vasi_32/a3o8Lyvn/ – brk

+0

@ user2181397在審查您的代碼並更新GreaseMonkey腳本與您的更改後,它仍然不起作用。我將對GreaseMonkey做更多的研究,看看爲什麼你的代碼不能解決我的問題。非常感謝你的協助。 – MarcShawn

回答

0

應該有一些變化工作:

  1. 看起來你拼錯了你的類名。
  2. 您需要使用getElementsByClassName()[0]才能按類名獲取元素。

我遇到了一些麻煩此代碼段中工作,但我得到了它的jsfiddle工作

JSFiddle: Span to Link

下面是修改後的JavaScript:

var locE = document.getElementsByClassName('userinfo2015-basics-asl-location')[0]; 
var location = locE.textContent; 

var newSrc = "https://www.google.com/maps/place/" + location; 
var link = document.createElement('a'); 
link.setAttribute("href", newSrc); 
link.setAttribute("target", "_blank"); 
link.innerHTML = location; 
locE.parentNode.replaceChild(link, locE); 
+0

查看您的代碼並使用更改更新GreaseMonkey腳本後,它仍然不起作用。我將對GreaseMonkey做更多的研究,看看爲什麼你的代碼不能解決我的問題。非常感謝你的協助。 – MarcShawn

1

有些事情要糾正:

  • 要了解你的情況不使用元素,你應該因爲那需要id。改用querySelector;
  • 您指定的類名稱與HTML代碼中的不同:-basics-最後有s;
  • 請勿使用location作爲變量名,因爲這是全局對象的保留屬性。使用類似newLocation;
  • 向URL添加字符串時,應該轉義特殊字符(如&/=)。你可以使用encodeURIComponent作爲;
  • 並非真正的錯誤,但最好將textContent的文本分配爲innerHTML,因爲它並不是真的是您分配的HTML。

// use querySelector 
 
var locE = document.querySelector('span.userinfo2015-basics-asl-location'); 
 
// don't use location as variable name. 
 
var newLocation = locE.textContent; 
 
// use encodeURIComponent 
 
var newSrc = "https://www.google.com/maps/place/" 
 
      + encodeURIComponent(newLocation); 
 
var link = document.createElement('a'); 
 
link.setAttribute("href",newSrc); 
 
link.setAttribute("target","_blank"); 
 
link.textContent = newLocation; // use textContent 
 
locE.parentNode.replaceChild(link,locE);
<span class="userinfo2015-basics-asl-location">Orlando, FL</span>

+0

查看您的代碼並使用更改更新GreaseMonkey腳本後,它仍然不起作用。我將對GreaseMonkey做更多的研究,看看爲什麼你的代碼不能解決我的問題。非常感謝你的協助。 – MarcShawn

+0

控制檯中的任何錯誤?如果在Firefox中用'ctrl + j'打開全局控制檯並檢查錯誤。 – trincot

+0

locE未定義// document.querySelector(...)爲空// TypeError:target.tagName未定義// document.querySelector(...)爲空// Location_to_Google_Maps.user.js:9: 12 – MarcShawn