hallo

ik ben in het bezit van een uitgebreide Java script die bepaalde woorden op zoekt en dan daar een hyperlink rond maakt die gekopelt staat in een andere boek maar ik bezit nu een nieuwere versie van die boek en krijg ze niet gekoppeld in de nieuwe versie kan iemand mij daar bij helpen?
Waar loopt je op vast? Kan je wat relevante code laten zien? En bij voorkeur op JSfiddle?
dit is de java script

if (app.viewerVersion < 10) {
                app.addMenuItem({ cName: "AddLinksToBible", cUser: "Add Links To Bible", cParent: "Tools", nPos: -1, 
                               cExec: "addLinksToBible()", cEnable: "event.rc = (event.target != null);"}); 
                app.addMenuItem({ cName: "DiscloseFile", cUser: "Disclose File", cParent: "Tools", nPos: 0, 
                               cExec: "discloseFile()", cEnable: "event.rc = (event.target != null);"}); 
} else {
                app.addToolButton({ cName: "AddLinksToBible", cLabel: "Add Links To Bible", cTooltext: "Add Links To Bible",
                               cExec: "addLinksToBible()", cEnable: "event.rc = (event.target != null);"});
                app.addToolButton({ cName: "DiscloseFile", cLabel: "Disclose File", cTooltext: "Disclose File",
                               cExec: "discloseFile()", cEnable: "event.rc = (event.target != null);"});
                app.addToolButton({ cName: "OffsetLinks", cLabel: "Offset Links", cTooltext: "Offset Links",
                               cExec: "offsetLinks()", cEnable: "event.rc = (event.target != null);"});
}
 
var booksFullNames = ["Genesis", "Exodus", "Leviticus", "Numeri", "Deuteronomium", "Jozua", "Rechters", "Ruth", "1Samuël", "2Samuël",
                "1Koningen", "2Koningen", "1Kronieken", "2Kronieken", "Ezra", "Nehemia", "Esther", "Job", "Psalm", "Spreuken", "Prediker",
                "Hooglied", "Jesaja", "Jeremia", "Klaagliederen", "Ezechiël", "Daniël", "Hosea", "Joël", "Amos", "Obadja", "Jona", "Micha", "Nahum",
                "Habakuk", "Zefanja", "Haggaï", "Zacharia", "Maleachi",
                "Mattheüs", "Markus", "Lukas", "Johannes", "Handelingen", "Romeinen", "1Korinthiërs", "2Korinthiërs", "Galaten", 
                "Efeziërs", "Filippenzen", "Kolossenzen", "1Thessalonicenzen", "2Thessalonicenzen", "1Timotheüs", "2Timotheüs", "Titus", "Filemon", 
                "Hebreeën", "Jakobus", "1Petrus", "2Petrus", "1Johannes", "2Johannes", "3Johannes", "Judas", "Openbaring"
];
 
var booksMediumNames = [
                "Gen", "Ex", "Lev", "Num", "Deut", "Joz", "Rechters", "Ruth", "1Sam", "2Sam",
                "1Kon", "2Kon", "1Kron", "2Kron", "Ezra", "Neh", "Esth", "Job", "Ps", "Spr", "Pred",
                "Hoogl", "Jes", "Jer", "Klaagl", "Ezech", "Dan", "Hos", "Joël", "Amos", "Obadja", "Jona", "Micha", "Nahum",
                "Hab", "Zef", "Hag", "Zach", "Mal",
                "Matth", "Mark", "Luk", "Joh", "Hand", "Rom", "1Kor", "2Kor", "Gal",
                "Ef", "Fil", "Kol", "1Thess", "2Thess", "1Tim", "2Tim", "Tit", "Filem",
                "Hebr", "Jak", "1Petr", "2Petr", "1Joh", "2Joh", "3Joh", "Jud", "Openb"
];
 
var booksShortNames = [ "Ge", "Ex", "Le", "Nu", "De", "Joz", "Re", "Ru", "1Sa", "2Sa",
                "1Kon", "2Kon", "1Kr", "2Kr", "Ezr", "Ne", "Es", "Job", "Ps", "Sp", "Pr",
                "Hgl", "Jes", "Jer", "Klg", "Ez", "Da", "Ho", "Joë", "Am", "Ob", "Jon", "Mi", "Na",
                "Hab", "Ze", "Hag", "Za", "Mal",
                "Mt", "Mr", "Lu", "Jo", "Han", "Ro", "1Kor", "2Kor", "Ga", 
                "Ef", "Fil", "Kol", "1Th", "2Th", "1Ti", "2Ti", "Tit", "Flm", 
                "Heb", "Jak", "1Pe", "2Pe", "1Jo", "2Jo", "3Jo", "Ju", "Opb"
];
 
var namedDests = ["Ge", "Ex", "Le", "Nu", "De", "Joz", "Re", "Ru", "1Sa", "2Sa", 
                "1Kon", "2Kon", "1Kr", "2Kr", "Ezr", "Ne", "Es", "Job", "Ps", "Sp", "Pr", 
                "Hgl", "Jes", "Jer", "Klg", "Ez", "Da", "Ho", "Joe", "Am", "Ob", "Jon",
                "Mi", "Na", "Hab", "Ze", "Hag", "Za", "Mal",
                "Mt", "Mr", "Lu", "Jo", "Han", "Ro", "1Kor", "2Kor", "Ga", "Ef", "Fil", "Kol",
                "1Th", "2Th", "1Ti", "2Ti", "Tit", "Flm", "Heb", "Jak", "1Pe", "2Pe",
                "1Jo", "2Jo", "3Jo", "Ju", "Opb"
];
 
function discloseFile() {
                this.addScript("init", "this.disclosed=true;");
                app.alert("Done.",3);
}
 
function offsetLinks() {
                var resp = app.response("Enter the offset (in points):","", "16");
                if (resp==null || resp=="" || isNaN(+resp)) return;
                var offset = +resp;
                for (var i=0; i<this.numFields; i++) {
                               var f = this.getField(this.getNthFieldName(i));
                               if (f==null) continue;
                               if (f.type=="button" && /^_/.test(f.name)) {
                                               var r = f.rect;
                                               r[0]-=offset;
                                               r[1]-=offset;
                                               r[2]-=offset;
                                               r[3]-=offset;
                                               f.rect = r;
                               }
                }
                app.alert("Done.",3);
}
 
//addLinksToBible(2,9,9);
function addLinksToBible() {
 
                var mode, firstPage, lastPage;
                var dialog1 = {
 
                               initialize: function (dialog) {
                                               dialog.load({
                                                               rad1: true,
                                                               txt1: "1",
                                                               txt2: ""+this.parentDoc.numPages,
                                               })
                               },
 
                               cancel: function(dialog) {
                                               return;
                               },
 
                               destroy: function(dialog) {
                                               return;
                               },
 
                               commit:function (dialog) {
                                               var results = dialog.store();
                                               if (results["rad1"]) mode = 1;
                                               else if (results["rad2"]) mode = 2;
                                               else if (results["rad3"]) mode = 3;
                                               
                                               firstPage = Number(results["txt1"])-1;
                                               lastPage = Number(results["txt2"])-1;
                                               return;
                               },
 
                               validate:function (dialog) {
                                               var results = dialog.store();
                                               if (results["rad1"]==false && results["rad2"]==false && results["rad3"]==false) {
                                                               app.alert("You must select the book names mode.");
                                                               return false;
                                               }
                                               if (results["txt1"]==null || results["txt1"]=="" || isNaN(+results["txt1"]) ||
                                                               results["txt2"]==null || results["txt2"]=="" || isNaN(+results["txt2"])) {
                                                               app.alert("Invalid page range.");
                                                               return false;
                                               }
                                               return true;
                               },
 
                               description: {
                                               name: "",
                                               align_children: "align_left",
                                               width: 350,
                                               height: 100,
                                               elements:[
                                                               {
                                                                              type: "cluster",
                                                                              name: "Add Bible Links",
                                                                              align_children: "align_left",
                                                                              elements:[
                                                                              {
                                                                                              type: "static_text",
                                                                                              name: "Select the type of book names:"
                                                                              },
                                                                              {
                                                                                              type: "view",
                                                                                              align_children: "align_distribute",
                                                                                              elements:[
                                                                                                              {                                                                                                                            
                                                                                                                             group_id: "mode",
                                                                                                                             item_id: "rad1",
                                                                                                                             type: "radio",
                                                                                                                             name: "Short names",
                                                                                                                             width: 20,
                                                                                                                             height: 20,
                                                                                                              },
                                                                                                              {                                                                                                                            
                                                                                                                             group_id: "mode",
                                                                                                                             item_id: "rad2",
                                                                                                                             type: "radio",
                                                                                                                             name: "Medium names",
                                                                                                                             width: 20,
                                                                                                                             height: 20,
                                                                                                              },
                                                                                                              {                                                                                                                            
                                                                                                                             group_id: "mode",
                                                                                                                             item_id: "rad3",
                                                                                                                             type: "radio",
                                                                                                                             name: "Long names",
                                                                                                                             width: 20,
                                                                                                                             height: 20,
                                                                                                              }
                                                                                                              
                                                                                              ]
                                                                              },
                                                                              {
                                                                                              type: "static_text",
                                                                                              name: "Which pages to process:"
                                                                              },
                                                                              {
                                                                                              type: "view",
                                                                                              align_children: "align_distribute",
                                                                                              elements:[
                                                                                                              {
                                                                                                                             item_id: "txt1",
                                                                                                                             type: "edit_text",
                                                                                                                             width: 40,
                                                                                                              },
                                                                                                              {
                                                                                                                             type: "static_text",
                                                                                                                             name: "-"
                                                                                                              },
                                                                                                              {
                                                                                                                             item_id: "txt2",
                                                                                                                             type: "edit_text",
                                                                                                                             width: 40,
                                                                                                              }
                                                                                              ]
                                                                              },
                                                                              { type: "gap"},
                                                                              {
                                                                                              alignment: "align_right",
                                                                                              type: "ok_cancel",
                                                                                              ok_name: "OK",
                                                                                              cancel_name: "Cancel"
                                                                              },
                                                                              ]
                                                               },
                                               ]
                               }
                };
 
                dialog1.parentDoc = this;
                if (app.execDialog(dialog1)!="ok") {return};
 
                function openBibleLink() {
                               var bibleFileName = "2006 'bi' BIJBEL genootsch";
                               var bibleDoc = app.openDoc({cPath: bibleFileName, oDoc: this, cDest: event.target.name});
                               if (bibleDoc==null) {
                                               app.alert("Error! Can't locate the bible file: " + bibleFileName);
                                               return;
                               }
                }
 
                var bookNames;
                if (mode==1) { // short names
                               bookNames = [].concat(booksShortNames);
                } else if (mode==2) { // medium names
                               bookNames = [].concat(booksMediumNames);
                } else if (mode==3) { // full names
                               bookNames = [].concat(booksFullNames);
                }
                for (var i in bookNames) bookNames[i]=bookNames[i].toLowerCase();
                //console.println(bookNames);
                
                var startTime = new Date();
                var t = app.thermometer;
                t.duration = (lastPage - firstPage);
                t.begin();
                var counter = 0;
                //console.clear();
                for (var p=firstPage; p<=lastPage; p++) {
                               console.println("Processing page #"+p);
                               t.value = (p-firstPage)+1;
                               t.text = "Processing page " + ((p-firstPage)+1) + "/" + ((lastPage - firstPage)+1);
                               var numWords = this.getPageNumWords(p);
                               for (var i=0; i<numWords-2; i++) {
                                               //console.println("Processing word #"+i);
                                               var word  = this.getPageNthWord(p,i,true).toLowerCase();
                                               word = word.replace(/^\(/,"");
                                               var wordFull = this.getPageNthWord(p,i,false);
                                               var wordRect = convertWordQuadsToRect(this, p, i);
                                               
                                               if (bookNames.indexOf(word)==-1 || bookNames.indexOf(word)==42) {
                                                               var prevWord = "";
                                                               if (i>0) prevWord=this.getPageNthWord(p,i-1,true).toLowerCase();
                                                               if (prevWord!="" && /^\d$/.test(prevWord)) {
                                                                              word = prevWord+word;
                                                                              var prevWordRect = convertWordQuadsToRect(this, p, i-1);
                                                                              wordRect[0] = prevWordRect[0];
                                                               }
                                               }                                             
                                               
                                               word = word.replace(/^\(/,"");
                                               
                                               //console.println("word: " + word);
                                               if (bookNames.indexOf(word)!=-1) {
                                                               //console.println("MATCH");
                                                               var word1 = this.getPageNthWord(p,i+1,true).toLowerCase();
                                                               var word2 = this.getPageNthWord(p,i+2,true).toLowerCase();
                                                               if (/^\d+$/.test(word1)) {
                                                                              if (/^\d+$/.test(word2)) {
                                                                                              //var r1 = convertWordQuadsToRect(this, p, i);
                                                                                              var r2 = convertWordQuadsToRect(this, p, i+2);
                                                                                              var r;
                                                                                              if (wordRect[1]==r2[1]) {
                                                                                                              r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
                                                                                                              createBibleLink(this, p, r, word, word1, word2, bookNames);
                                                                                              }
                                                                                              else {
                                                                                                              r = [wordRect[0],wordRect[1],wordRect[2],wordRect[3]];
                                                                                                              createBibleLink(this, p, r, word, word1, word2, bookNames);
                                                                                                              var r3 = convertWordQuadsToRect(this, p, i+1);
                                                                                                              r = [r3[0],r3[1],r2[2],r3[3]];
                                                                                                              createBibleLink(this, p, r, word, word1, word2, bookNames);
                                                                                              }
                                                                                              counter++;
                                                                              } else {
                                                                                              //var r1 = convertWordQuadsToRect(this, p, i);
                                                                                              var r2 = convertWordQuadsToRect(this, p, i+1);
                                                                                              r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
                                                                                              createBibleLink(this, p, r, word, word1, "", bookNames);
                                                                                              counter++;
                                                                              }
                                                               }
                                               } else if (wordFull=="¨ " || wordFull=="¨") {
                                                               //console.println(i+":"+wordFull)
                                                               word = this.getPageNthWord(p,i-1,true).toLowerCase();
                                                               if (/u$/.test(word)) {
                                                                              word = word.replace(/u$/, "ü");
                                                               }
                                                               word+=this.getPageNthWord(p,i+1,true).toLowerCase();
                                                               word = word.replace(/\s/g,"");
                                                               //console.println("full word: " + word);
                                                               if (bookNames.indexOf(word)!=-1) {
                                                                              i++;
                                                                              //console.println("MATCH");
                                                                              wordRect = convertWordQuadsToRect(this, p, i-2);
                                                                              var word1 = this.getPageNthWord(p,i+1,true).toLowerCase();
                                                                              var word2 = this.getPageNthWord(p,i+2,true).toLowerCase();
                                                                              if (/^\d+$/.test(word1)) {
                                                                                              if (/^\d+$/.test(word2)) {
                                                                                                              //var r1 = convertWordQuadsToRect(this, p, i);
                                                                                                              var r2 = convertWordQuadsToRect(this, p, i+2);
                                                                                                              var r;
                                                                                                              if (wordRect[1]==r2[1]) {
                                                                                                                             r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
                                                                                                                             createBibleLink(this, p, r, word, word1, word2, bookNames);
                                                                                                              }
                                                                                                              else {
                                                                                                                             r = [wordRect[0],wordRect[1],wordRect[2],wordRect[3]];
                                                                                                                             createBibleLink(this, p, r, word, word1, word2, bookNames);
                                                                                                                             var r3 = convertWordQuadsToRect(this, p, i+1);
                                                                                                                             r = [r3[0],r3[1],r2[2],r3[3]];
                                                                                                                             createBibleLink(this, p, r, word, word1, word2, bookNames);
                                                                                                              }
                                                                                                              counter++;
                                                                                              } else {
                                                                                                              //var r1 = convertWordQuadsToRect(this, p, i);
                                                                                                              var r2 = convertWordQuadsToRect(this, p, i+1);
                                                                                                              r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
                                                                                                              createBibleLink(this, p, r, word, word1, "", bookNames);
                                                                                                              counter++;
                                                                                              }
                                                                              }
                                                               }
                                               } else {
                                                               // in case the book name and chapter number are connected
                                                               for (var j in bookNames) {
                                                                              var reg = new RegExp("^"+bookNames[j]+"\\d+");
                                                                              if (reg.test(word)) {
                                                                                              var word1 = this.getPageNthWord(p,i+1,true).toLowerCase();
                                                                                              if (/^\d+$/.test(word1)) {
                                                                                                              var chapterNumber = word.match(/\d+$/)[0];
                                                                                                              var bookName = word.replace(new RegExp(chapterNumber+"$"),"");
                                                                                                              //var r1 = convertWordQuadsToRect(this, p, i);
                                                                                                              var r2 = convertWordQuadsToRect(this, p, i+1);
                                                                                                              r = [wordRect[0],wordRect[1],r2[2],wordRect[3]];
                                                                                                              createBibleLink(this, p, r, bookName, chapterNumber, word1, bookNames);
                                                                                                              counter++;
                                                                                              }
                                                                                              break;
                                                                              }
                                                               }
                                               }
                               }
                }
                t.end();
                var endTime = new Date();
                //console.println("Run time: " + ((endTime-startTime)/1000));
                
                this.addScript("BibleLinks", openBibleLink);
                app.alert("Done. " + counter + " links were created.",3);
 
}
 
function createBibleLink(doc, p, r, book, chapter, verse, bookNames) {
                var bookIndex = bookNames.indexOf(book);
                if (bookIndex==-1) {
                               console.println("Error! Could not locate the index for: " + book);
                               return false;
                }
                
                /*var pageCropBox = doc.getPageBox("Crop", p);
                var pageBBox = doc.getPageBox("BBox", p);
                var xOffset = pageBBox[0]-pageCropBox[0];
                var yOffset = pageBBox[1]-pageCropBox[1];
                console.println("xOffset:"+xOffset);
                console.println("yOffset:"+yOffset);*/
                /*xOffset = 16;
                yOffset = 16;
                r[0]-=xOffset;
                r[2]-=xOffset;
                r[1]-=yOffset;
                r[3]-=yOffset;*/
                
                var bookDestName = namedDests[bookIndex]
                var destName = bookDestName+"_"+chapter;
                if (verse!=null && verse!="" && verse!="1")
                               destName+="_"+verse;
                var f = doc.addField(destName, "button", p, r);
                f.setAction("MouseUp", "openBibleLink()");
                f.lineWidth = 0;
                //f.strokeColor = color.ltGray;
                f.userName = "Click to jump to this location in the Bible file.";
}
 
function convertWordQuadsToRect(doc, p, i) {
                return convertQuadsToRect(doc, p, doc.getPageNthWordQuads(p, i));
}
 
 
function convertQuadsToRect(doc, p, q) {
                var m = (new Matrix2D).fromRotated(doc,p);
                var mInv = m.invert()
                var r = mInv.transform(q)
                r = r.toString()
                r = r.split(",");
                return [+r[4], +r[3], +r[2], +r[5]];
}


de boek waar hij naar moet verwijzen is een andere maar als ik deze naam veranderd doet hij niks

Ik snap dat je graag geholpen wilt worden, maar ik en anderen hebbem geen zin om 403 regels aan code door te ploegen. Kan je het inkorten tot relevante code van +/- 20 regels? Zet ze dan ook graag tussen code-tags die we hier op het forum hebben, dan is het beter leesbaar.

Ook is nog niet echt duidelijk wat je precies doet en wat er gebeurt.
ik wil het wel doen maar ken niks van java script dus weet zeker niet wat ik mag weggooien in de script.
ik heb deze scrip gekregen via via en de regel waar

function openBibleLink() {
var bibleFileName = "2006 'bi' BIJBEL genootsch";
var bibleDoc = app.openDoc({cPath: bibleFileName, oDoc: this, cDest: event.target.name});
if (bibleDoc==null) {
app.alert("Error! Can't locate the bible file: " + bibleFileName);
return;

staat moet veranderd worden want "2006 'bi' BIJBEL genootsch" is nu een andere boek en als ik de boek naam aanpas
in "nwt_O.pdf" doet hij het nog niet.
daarom de vraag of smeking hier.
Stapje terug: je hebt een boek, waarin het script links aanmaakt naar een ander boek (de bijbel). Welk boek is nu nieuw: het boek waarin je leest en de links in aanbrengt, of de bijbel waar je naartoe wilt verwijzen?

En waar komt die "app" variabele vandaan (met name: wat doet app.openDoc; ik zie iets met een Adobe lib voorbij komen op de internets - is dat 'm; en hoe weet die lib waar "2006 'bi' BIJBEL genootsch" is te vinden - wat is dat: een HTML pagina of een PDF)?

[size=xsmall]Toevoeging op 21/07/2019 17:20:17:[/size]

Misschien enkel "nwt_O" (zonder de ".pdf" - net zoals bij "2006 'bi' BIJBEL genootsch")?
de nieuwe boek waar hij naar verwijs is nieuw
dus voor de duidelijkheid
in boek 1 worden er links aangemaakt met de java script en deze worden verwezen naar boek 2 de ( nieuwe bijbel)
de 2 boeken zijn PDF's
de oude bijbel was 2006 bi BIJBEL genootsch
Wellicht een gek idee, maar waarom moet dit dynamisch?
De Bijbel wijzigt nou niet echt frequent qua opbouw/inhoud etc.
Als het alleen maar een link aanpassen is; waarom dan niet eenmalig met een CTRL + H in je editor doen?
dag eddy

uw redenatie klopt wel, maar het is om de lees boek die moet steeds naar de bijbel verwijzen, en deze word steeds nieuw.
Daarom dynamisch, ik verlies veel tijd om steeds dit manueel te moeten doen
En met welke reden is er gekozen om het integraal in Javascript te doen? Kan je misschien een voorbeeld op JSfiddle of een testsite plaatsen?
ik heb het zelf niet gemaakt ik ken niks van scrips iemand had dat aan mij gegeven maar hij had het ook gekregen van iemand maar we weten niet s-wie het gemaakt heeft.
van mij mag het gemaakt worden in een andere vorm als het maar doet.
ps ik heb eens de scrip op JSfiddle gezet hier de link
https://jsfiddle.net/sg73ubxv/

Reageren