GWT: The setInnerHTML method decodes attribute values before setting them

Upon receiving this specific string from the server-side:

<a onclick="doit('&#39;')">...</a>
, my goal is to set it as the inner HTML of an element.

However, when attempting to use Element#setInnerHTML, the string ends up converting to

<a onclick="doit(''')">...</a>
, essentially unescaping the HTML entity into the character it represents.

Is there a way for me to assign the inner HTML without any entity conversions taking place?

To clarify, the inner HTML assignment should avoid unescaping entities within attribute values only.

Answer №1

element, we can observe that the setInnerHTML() function implementation does not present any problems. Its main purpose is to assign a property value to the JS object underneath. This can be verified by inspecting the source code of Element:
public final native void setInnerHTML(String html) /*-{
    this.innerHTML = html || '';
}-*/;
The issue arises with the browser as it obediently adheres to the guidelines outlined in the Charset Entity References within the HTML Document Representation specifications, parsing entities contained within attribute nodes. These entities are permitted and therefore get parsed. According to the specification:

Authors should also use "&amp;" in attribute values since character references are allowed within CDATA attribute values.

To resolve this, one should escape all special characters found within attribute values, either on the server side or through a filter or designated client proxy, using the corresponding HTML entities. For example:
<a onclick=\"doit('&amp;#39;')\">...</a>
For further reading, refer to the following resources on W3C:

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Click on a specific image in a table using Cypress with a specific source URL

I need help with a query for Cypress regarding a table of items, each item having active (blue) and not active (black) images. How can I set up this query? Below is an image of the table list: https://i.stack.imgur.com/74qzb.png And here is the HTML code ...

leveraging an array from a separate JavaScript file within a Next.js page

I am facing a situation where I need to utilize an array from another page within my Next.js project. However, it seems that the information in the array takes time to load, resulting in encountering undefined initially when trying to access it for title a ...

The problem with the CSS Grid effect

Looking for assistance in creating a grid layout similar to the one on this website: Upon inspecting the page source, I found the following code snippet: http://jsfiddle.net/o45LLsxd/ <div ng-view="" class="ng-scope"><div class="biogrid ng-scope ...

What could be the reason why this function in jQuery is not functioning properly?

I am trying to duplicate the span element inside the `test` element using the .clone method. It seems like it works as expected. However, when I try to use .html in a `.click` function, it doesn't work. Can someone point out where I went wrong and sug ...

The data in a NodeJS-generated JSON file is incorrect

In an attempt to generate a well-formatted JSON file containing the names of files (testfile1, testfile2, testfile3) located in a directory named "uploads," I wrote the code below: const fs = require("fs"); let toJson = {files: []}; let file = new Object() ...

Leveraging the 'passport.isAuthenticated()' method for evaluating numerous user roles within a Node.js application

Below is the code snippet for my custom isAuthenticated function: var isAuthenticated = function (req, res, next) { if (req.isAuthenticated()) return next(); res.redirect('/'); }; Here's a route that uses PassportJs with the custom isA ...

Retrieve information from a JSON file using a Node.js server

As a JavaScript beginner, I am trying to figure out how to fetch data from a JSON object located on my localhost. Is there a better way to accomplish this task? fetch('http://localhost:3000/show') .then(result => { console.log( ...

What causes the console.log statement to return undefined in this code snippet?

var elements = $('.container'); var links = new Array('home', 'about', 'services', 'gallery', 'contact'); for (var j = 0; j < links.length; j++) { elements.on('click', 'a[hre ...

Filter jQuery search results for classes with identical names

I am new to using jQuery, so please excuse my lack of experience. My current challenge involves 'getting a reference to an object wrapped in a class', but there are multiple classes with the same name. How can I specifically target and retrieve t ...

Is there a way to incorporate promises into an endless loop while adding a delay in each iteration?

require("./getSongFromSpotify")().then(a => { require("./instify")(a.artist,a.name).then(r => { if (r.status === "ok"){ console.log("saved") }else{ console.log(" ...

Combining a JavaScript NPM project with Spring Boot Integration

Recently, I built a frontend application in React.js using NPM and utilized IntelliJ IDEA as my IDE for development. Additionally, I have set up a backend system using Spring Boot, which was also developed in IntelliJ IDEA separately. My current goal is t ...

The image is experiencing difficulty loading from the Express static directory

Having some trouble with image loading... I've noticed that images are loading fine from the local folder, but not from the uploads folder which is set to be static. I've been attempting to upload a file from the browser. The upload and save pr ...

Stopping $interval using promise after a specific condition is satisfied using Angular timer

I'm struggling to figure out why my $interval service isn't canceling properly. It seems like something important is missing. In my code, I've set up a counter that's tied to a counting property: $scope.sessionCounter $scope.sessionC ...

Experiencing the "Module not found" issue while incorporating SCSS into React applications

I attempted to apply a SCSS style to my "Logo.js" component, but I am still unable to resolve the error that keeps popping up: ERROR in ./src/components/Logo/Logo.js 5:0-19 Module not found: Error: Can't locate 'logo.scss' in '/Users/a ...

Retrieving JSON data

Here is a URL that returns JSON data: Link. I am attempting to access this data with the following script: $.ajax({ type: 'GET', url: 'http://www.spritpreisrechner.at/espritmap-app/GasStationServlet?data=%5B%22Stgilgen%22%2C%22DIE%22%2C13 ...

Ways to differentiate between an angular element and a jQuery element

In order to implement a feature where clicking outside of a dropdown hides it within a directive, I have the following code: $(document).click(function(e) { var selector = $(e.target).closest('.time-selector'); if (!selector. ...

Saving and retrieving user input as a variable using Javascript and HTML local storage

This is the foundation of my HTML page. When the "remember text" paragraph is clicked, the data in the input text box is saved to local storage as a string. Clicking the "recall text" paragraph loads the stored data into the "recalled text" paragraph. I am ...

Generate a new item using an existing one

I am seeking to extract the desired output from the provided input: Input Configuration: var inputParams = { 'inputDetails' :[ { 'field' : 'specificationName', 'value' : 'strong'}, { ...

Is it possible to utilize Vue.js' v-if directive to validate if a certain value is present within an array

In my form, I have a checkbox and I want to be able to use v-if directly to display or hide sections based on the selected checkbox values. Can this be done using v-if, or do I need to use watch:? ...

Using jQuery to Check Cookies and Hide Content Depending on the Value and Data Attributes

On a webpage, I have a collection of coupons with unique data attributes (data-coupon). Currently, I am using cookies to store the value associated with each coupon (ranging from 1 to 4). While my code is functional, it feels repetitive and cumbersome. S ...