I was wondering if it's possible to capture a piece of HTML using XPath where the source is a sting rather than a document. I know how to use xPath and document.evaluate() as I've used it before on actual web pages - I just don't understand how to run it on a string of HTML.
E.g. if I have this string:
var stg = "<div>The best-laid schemes o' <span>mice</span> an' men</div>";
I'd like to convert this string into something that I can run the document.evaluate() on so that I can find the contents of the SPAN element (without loading the string into a real browser page).
in the XPath expression "/html/body/div/ul[1]/li[5]", I need to traverse from li[1] to li[5], so I should use a variable here , like this:
for (index =1; index<6; i++) { nodes = document.evaluate("/html/body/div/ul[1]/li[index]", ....); // the variable index here is invalid! } my question is: How to use the variable in XPath expression?
I want to get all the "a" elements with the href attribute in this form: [URL] where any can be a string containing just letters and/or numbers. I'm new to regex and XPath so i can't get it right. I digured it out the regex but i'm not sure if it's 100% correct:
In this example, the same javascript window function is called by two separate form buttons(onClicks) to open('window.open' ) or bring forward( 'object.focus') a window.
One button calls the window function directly from the form and one button calls the window function indirectly from within the body of the html document by first activating a 'document.submit' method .
In particular, using a PC with either Explorer or Firefox, both indirect and direct routes opened a window, but only the direct route could bring the window forward(via 'object.focus') if it was already open. Using a Mac with Firefox, the direct route worked well either to open or to bring forward an existing window, but the indirect route did nothing. On the other hand, when using a Mac with the Safari browser, both routes worked well to open a window and keep it on top.
What do I change or add to get full functionality for the indirect route with the Firefox and Explorer browsers as I get with Safari?
You have an AJAX request and the response is mixed HTML + JavaScript. The javascript is referring to elements in the HTML component. Currently the JavaScript gets evaluated first thing when success is triggered and the HTML is returned as a parameter. Obviously this is not going to work ( in this scenario anyway ). As a previous Mootools user I was used to Request.HTML's responseJavaScript parameter and evalScripts option. None of there options are available in the $.ajax implementation.
P.S. I know I could make the javascript a file and load it separately. I know I can make my response JSON and have the js and html in separate properties of the JSON object. I want neither.
Suppose a HTML document has a iframe. Using javascript,I want to detect ,on load of the html document, whether the body of the iframe document is ready to be displayed.I want to be able to overwrite the the body contents (before it actullay loads) of the iframe.can I do it with jquery? say if ,HTML doc is
Normally an SVG document is loaded/parsed/interpreted inside an HTML document using an 'object' (or 'embed') element, although there are supposedly other ways too. The problem is, the SVG document must be static this way.
I want to use the DOM interface to build SVG dynamically inside an HTML document. I am guessing I can build it inside HTML within an 'object' (or maybe 'iframe'?) element.
My intentions/goals:
In Javascript, I construct an object 'embedSVG' which has properties and methods for creating valid SVG elements and setting their attributes and attribute values.
During construction, the SVG document is created with its root element. During debugging in FF 2.0 (I'll work on an MSIE-compatible format later), I am using the Mozilla DOM Inspector and comparing nodes when the 'object' element is loading a valid external SVG document, and when I am appending the child representing the SVG document created by the DOM functions.
However the child node (#document) does not specify 'svg' as the root element, but instead 'HTML'. Something is not working.
Here is the relevant code in 'ScriptTest.html' which is the HTML in which the SVG is supposed to be embedded. Below it is the relevant code for 'svglib.js' which is supposed to contain code for building the SVG dynamically.
What this code is supposed to do is load the HTML page and execute the anonymous script, and draw a navy blue-bordered yellow rectangle on a blank page. This is similar to the example in the SVG 1.1 W3C Recommendation on page 202 of the 719-page PDF.
I am getting an exception when embedSVG object placeInHTML() method is called: NS_ERROR_DOM_HIERARCHY_REQUEST_ERR. I find in DOM Inspector in spite of or after the exception that a document is placed as a child of the object element, but it is HTML, with a default 'head', 'title', 'body' elements placed.
Just wondering - is there some trick that allows this to be done of which I am not aware? Specifically, I would like to use XPath to query the _current_ HTML document in IE.
I have a PHP page generating a list of items. I've made it so that each one has a radiobutton with a unique value. You can click on the radiobutton and it will change the value of a text field to the value of the radiobutton--all that works fine!
Now, I need to also have it populate a textfield with the value of a textfield in the row that's selected.
I can make unique field names, no problem. I think my problem is getting the javascript written so that it recognizes the variable.
Well, see below. As it's written below, the textfield "itemqty" always has the value "NaN" (wherever THAT comes from) no matter which radiobutton I select.
I have an URL like www.bla.com#myhashtag. Now I want to get the string "myhashtag" without the hash.So far I have thish which should give me "#myhashtag", right?
var hashextract = location.hash; var hashextract2 = '<h2>'+hashextract+'</h2>'; $j(hashextract2).appendTo("#hashtag");
But I am not getting anything. Am I doing something wrong here?
I have a script that will loop through all the INPUT elements of a form; if the input is a submit it will disable the submit (or enable the submit, depending upon what is passed to the function.) I hate using eval() - I avoid it whenever I can! Is there a better way to dynamically process the ".disabled = 'true'/'false';" portion?
The following example works great in Firefox, and Chrome but fails miserably in IE (6,7,8). I'm running JQuery 1.3.2 if it makes a difference: $('resp',"<root><resp>value</resp></root>").text(); That evaluates to "value" in everything except IE.
Let me preface this with the usual disclaimer: I am new to this and have only been programming with Javascript, PHP for about 2 weeks now and have been lucky enough to have resolved the issues I have encountered. This one however is puzzling to me.
I have a HTML form created that collects member information. It calls, on submit, a confirmation page that lists all the data fields entered. This all works great. However, when I then post the variables from the first html form page from my second confirmation html page to my PHP script, using document.write with input type=hidden and inserting the address variable into the value field, the Javascript only passes this variable up to the first space. It is the only variable I pass that has a space in it.
I have verified that the variable does indeed contain the whole address and I have also verified when I execute the following: document.write ('<input type="hidden" name="address1" value='+address_1+'>');
the address_1 parameter passed to the php script only passes the string up to the first space.
I even tried to put fixed text in there instead of a variable (e.g.)
Curious about the following issue. I currently have a dynamic drop-down based on the value of each option.. If selection in top drop-down is B it will show all options with a B contained in the second/resulting drop-down.
Now - I also want to evaluate the options by having the script check for a few keywords..
Example - have it evaluate the drop-down on page load for options with text containing 'blah123' (ex. <option value="0323G">Qwerty - blah123</option>). And if any of the options have that text the script will generate an additional drop-down menu allowing you to select blah123 or other specified text. Say another thing I'd like to search each text string for is 'abump'. If there is 'blah123' and 'abump' contained within the drop-down, a third drop-down menu will be generated (as said before) with only blah123 and abump as options. Whichever of these is selected will narrow down the options available in the final drop-down menu.
I have built a page on a recruitment website which allows users to upload their CV via ASPUpload i.e a browse button. However I want to limit the file type to just MS Word documents as I do want them uploading large PowerPoint files etc. My idea is to have some javascript which evaluates the last 4 characters of the file name to ensure it is .doc So if they try to upload anything other than a .doc file a dialogue box will appear stating that they must only upload MS Word Document (when they click the ‘Upload CV’ button).
Does anyone know how I can evaluate the last 4 characters of the file name? Once the user has browsed to their CV on their PC the path & file name will appear in a text field called ‘CV’.
I want to call java function in javascript.In which we pass one parameter to function and its returns String value which I want to display in alert message.
I don't know how to evaluate the no-blank selections against each other from a form as follows: .
I have a form with 6 dropdown fields, each containing a selection of 30 options (the 30 options are the same for each dropdown list). The user needs to select 'one of the 30 options' from each dropdown selection, but each option they select must be unique (no duplicate selections) or it must be left blank. E.g. The user can select Option3 within "dropdown1", but must select a different option for the other dropdowns - OR leave them unselected.
I am returning the present time - then using the .substr to remove all digits except the last two on the right (i.e effectively returning the value 32 from 65344532) I am then looping, subtracting 11 from that number until the value is less than 11. The intent being to then return the value from the appropriate matching array ID code...
The problem arises with evaluating two digit numbers beginning with zero - In cases where the last two numbers are greater than 09, the looping returns a 1 digit number for valuse less than 10, in cases where the last two digits begin with zero the loop will not begin. I have attempted to use the switch(n) to determine if any 01, 02, 03 ... etc exists but this is not evaluating correctly - is this due to using the date/time object and if so is there a good way to convert this to either a numeric or string datatype where the case can be evaluated correctly?
Suppose I have an html document with javascript, opened in my web browser. I need my script to generate another html (which just displays some text), and open it in new tab automatically. How is it done? Conside this code:
I have an outer page and an inner iframe. The outer page calculates some javascript, and wants the inner frame to run it. The inner frame should hit a page on the same (private) web server, so this is not a cross-site scripting attack. But I would prefer not to taint the target page with any extra logic to do this. (I will if I must.)
Note that both the outer and inner page have a span with the same ID.
This question will resemble a JavaScript FAQ - how to evaluate Javascript on the fly, or how to reload a JS file. The answers on the web generally do not transport the JS across a frame boundary, so they don't address the bug I encountered, and I can't tell if prototype.js or IE is at fault.
The outer page calls Ajax goodies that generate some JS looking like this:
Element.update("update_me", "here I B");
The page sends that, as a string, into this JS (in application.js):
function update_grinder(sauce) { var grinder = $('grinder');
if (grinder) { var doc = grinder.contentDocument; if (!doc) doc = grinder.document; if (doc) { evaluate(doc, sauce); return; } } document.write("your browser sucks"); }
So that contains enough logic to find the iframe's document, and it works for Firefox, IE, Konqueror, and Opera. The code calls evaluate() with the document where we need the evaluation context, and the string with our source.
Here's evaluate():
function evaluate(doc, sauce) { var s = doc.createElement('script'); //s.defer = true; // <-- no effect s.text = sauce; var body = doc.getElementsByTagName('body').item(0);
if (body) { body.appendChild(s); return; } body = doc.body; if (body) { body.appendChild(s); return; } }
That creates a <scriptblock, sticks our string in as its contents, and pushes the block to the end of our <bodytag. Now here's the bug:
Firefox updates the inner <span id='update_me'>, and IE updates the outer one.
If I remove the outer <span id='update_me'>, then IE simply can't find it and throws an error. Even though it evaluates a script block clearly in the context of the inner iframe.
I have tried calling the script from setTimeout, and from a button's onclick handler.
Is there some script.aculo.us way to fix (yet another) bug in IE? Or is this a bug in prototype.js?