...

View Full Version : Script not picking up the url and adding tags



jeddi
12-11-2009, 05:29 PM
Hi,

I am using this script which is nearly working correctly, but not quite!

When a user selects some text from the web-page and copies it,
the script is supposed to pick up the current web-page url and create a
resource box or credit line that is added to the selected text when the
data is pasted.

You will see that the meta keywords are used (randomly) as the anchor text
and this should be wrapped with the href= tags in order to create a link. Thats the bit that is not workink, but I can not see why.

Here is the complete script.





function init(){

// Options:
var useMetaKeyword = true; // Otherwise, page title
var minLength = 40; // Min selection chars
var useMetaAuthor = true; // Otherwise use domain
var addLinks = true; // Otherwise, just cite at end
var skip = new Array("home","link","click here"); // Don't link these (lowercase!)

function D(b,a,c){
if(b.addEventListener)b.addEventListener(a,c,false);
else b.attachEvent&&b.attachEvent("on"+a,c)}

function o(b,a){
if(typeof b=="undefined"||b==null||!RegExp)return false;
a=new RegExp("(^|\\s)"+a+"(\\s|$)");
if(typeof b=="string")return a.test(b);
else if(typeof b=="object"&&b.className)return a.test(b.className);return false}

function E(b,a){
var c=false,j;
for(j=b.parentNode;j!=undefined;){
if(b.parentNode==e.body)break;
else if(b.parentNode==a){c=true;break}j=j.parentNode}return c}

function F(b){
return b.replace(/^\s*/,"")
}

function G(b){
return b.replace(/\s*$/,"")
}

function H(b){
return G(F(b))
}

var I=new Array("home","link","click here"),
e=document,
x=window,
t=e.getElementsByTagName("body")[0],
p=e.getElementsByName("author"),
i=e.getElementsByName("keywords"),
q=x.location.toString(),
u=e.title.toString(),
d;if(!Array.indexOf)Array.prototype.indexOf=function(b,a){
var c=-1;
for(a=a|0;a<this.length||a==-1;a++)
if(this[a]==b)c=a;return c};
if(i.length>0&&useMetaKeyword){
i=e.getElementsByName("keywords")[0].getAttribute("content").split(",");
u=Math.floor(Math.random()*i.length);
i=i[u].replace(/^\s*|\s*$/,"")}
else
i=u;
p=(p.length>0&&useMetaAuthor)?p[0].getAttribute("content"):e.domain;

var y="<p id='credit'><br/>Read more about <a href='"+q+"'>"+i+"</a> by <a href='http://"+e.domain+"' />"+p+"</a></p>";

if(/MSIE/g.test(navigator.userAgent))var v="msie";
else if(/Safari/g.test(navigator.userAgent))v="safChrome";
q=e.createElement("span");q.setAttribute("id","sasText");
t.appendChild(q);
d=e.getElementById("sasText");

posType=document.all&&!window.opera&&!window.XMLHttpRequest?"absolute":"fixed";
d.style.position=posType;
d.style.top="0px";
d.style.left="-9999px";
D(t,"copy",function(){d.innerHTML=y;
if(v=="msie"){
for(var b=e.selection.createRange(),
a=b.parentElement();
a.nodeName!="BODY"&&!o(a,"lbExclude");)a=a.parentNode;
if(o(a,"lbExclude"))return true;
a=e.body.createTextRange();
a.moveToElementText(d);
var c=b.duplicate();
c=c.htmlText;

if(c.length>minLength){
d.id="tempSasText";
d.innerHTML=c+y;
(c=e.getElementById("sasText"))&&c.parentNode.removeChild(c);
d.id="sasText";a.select()}}

else{b=x.getSelection();
for(a=b.anchorNode;a.nodeName!="BODY"&&!o(a,"lbExclude");)a=a.parentNode;
if(o(a,"lbExclude"))return false;
if(b==""&&v=="safChrome"){
d.innerHTML=t.innerHTML;
a=document.createRange();
b.removeAllRanges();
a.selectNodeContents(d);b.addRange(a)}

else if(b.toString().length>minLength){
var j=e.getElementById("credit");
a=b.getRangeAt(0);
c=a.cloneContents();
d.id="tempSasText";
d.insertBefore(c,j);
(c=e.getElementById("sasText"))&&c.parentNode.removeChild(c);
d.id="sasText";
b.removeAllRanges();
a.selectNode(d);
b.addRange(a)}}

var w=[];a=d.getElementsByTagName("a");for(b=0;b<a.length;b++)w.push(a[b].href);

if(addLinks){a=e.getElementsByTagName("a");
for(b=0;b<a.length;b++){var r=a[b].href;

if(w.indexOf(r)==-1)if(E(a[b],d)==false){
var f=H(a[b].innerHTML).toLowerCase();

if(skip.indexOf(f)==-1)
if((new RegExp(e.domain,"g")).test(r)){
var z=[];

function n(g,k,l){
for(var A=g.childNodes.length;A-- >0;){
var h=g.childNodes[A];
if(h.nodeType===1)h.tagName.toLowerCase()!=="a"&&n(h,k,l);

else if(h.nodeType===3)
for(var m=h.data.length;1;){
m=h.data.lastIndexOf(k,m);
if(m===-1||z.indexOf(k.toLowerCase())!==-1)break;
var B=/\w/;
if(h.nodeValue.charAt(m-1).match(B)||h.nodeValue.charAt(m+f.length).match(B))break;
l.call(window,h,m)}}}

function s(g,k){g.splitText(k+f.length);
var l=e.createElement("a");
l.href=r;l.appendChild(g.splitText(k));
g.parentNode.insertBefore(l,g.nextSibling);
z.push(f.toLowerCase());
w.push(r)}n(d,f,s);f=f.charAt(0).toUpperCase()+f.slice(1);n(d,f,s);
f=f.toUpperCase();
n(d,f,s);f=f.replace(/\w\S*/g,function(g){
return g.charAt(0).toUpperCase()+g.substr(1).toLowerCase()});n(d,f,s)}}}}})}
window.onload=init;

I have put the script on this page:
test page (http://www.support-focus.com/consumer-support.php)

To test it, just go to that page, highlight some text
(at least 40 characters) copy it, and then paste it
into your editor or notepad.

You can see that it is picking up some info and
writing the attribute line but it doesn't create the link:(

If it helps get it working, I am happy to slim the code
down by excluding some features.

Any ideas ?

jeddi
12-12-2009, 08:45 PM
Would really appreciate some help if anyone
has any ideas about this.

Thanks

jeddi
12-14-2009, 10:13 AM
The script is supposed to create a credit line with working html hyperlinks
unfortunately the links don't appear.

Line 58 is where this credit line is created
- but I don't know why the hyperlink doesn't work

Any ideas ?

hdewantara
12-16-2009, 10:44 AM
:eek:Well surely it would took looong time for me as new scripter to have an idea,
since your script has already been optimized.

Think I'll leave this one for the forum seniors :D

NB: Interesting, I didn't know javascript could do like following,
what exactly they do?
line 84, and line 102:

(c=e.getElementById("sasText"))&&c.parentNode.removeChild(c);

jeddi
12-18-2009, 08:13 AM
Thanks for replying.

Although I understand a lot of the code, some of the
functions I have never used either.

I am also hoping that the senior guys will take a look and help me out.

It seems to be quite a tough one!



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum