Adding scripts in react + server side rendered app - javascript

I am trying to follow this integration for Experian QAS service: https://github.com/experianplc/Experian-Address-Validation
It's not really designed for React, so I am trying to find a way to integrate it.
So far, I have downloaded the script file 'experian-address-validation.js' and I have tried to run it by few methods:
Using react-helmet and simply adding
Using component
Creating a script element, adding .src property to it and then appending it to the body
None of these methods work. Also, when looking over 'Sources' tab, I can not find the JS script file, as if it does not exist.

Related

Can I have two separate files? React.js and HTML file

I am learning React.js, and I have noticed that each React file appears to be just a mix of JavaScript and HTML. But I enjoy having distinct files for my HTML and JS. So, I am wondering if I can have these two independent files but also include a link (or something) in either the HTML or JS file, so that they may communicate with one another.
Thank you.
React components implement a render() method that takes input data and returns what to display. This example uses an XML-like syntax called JSX. Input data that is passed into the component can be accessed by render() via this.props.
In other words, it was more simple than we separate html and render it on React, as a component.
If we still want to access html page via any page that created with react, we can did it via a href.
For any other way like import it (maybe), i think it was too complicated because of some reason.
Hope you will more understand about react with this react docs link
React is used to build single-page applications which is an application that loads a single HTML page and all the necessary assets (such as JavaScript and CSS) required for the application to run . this single HTML page is index.html located in the public folder (if you're using create-react-app)

Blazor JS scripts into a blazor component

I am building a Blazor app, I need to dynamically add a JavaScript file that is used only in a single Blazor component. As you would be aware Blazor allows adding script tags only to the root HTML document. This makes it difficult to add JavaScript files that are required only in a single component.
The script is
It is important to set the data-main="payment-js" attribute on the script tag.
Are there any restrictions around iframe rendering in Blazor? The script renders multiple iframes on the specific Blazor components as part a PCI compliant payment system integration.
The script works in a simple HTML file.
I would be grateful for any assistance
Edit:
Maybe MarkupString could help:
#((MarkupString)script)
#code {
string script = "<script data-main="payment-js" src="gateway.tillpayments.com/js/integrated/…>";
}
Old answer:
You could use the special HeadContent component to add the script in the <head> tag from your component.
<HeadContent>
<script suppress-error="BL9992" data-main="payment-js" src="gateway.tillpayments.com/js/integrated/…>
</HeadContent>
You have to add attribute suppress-error="BL9992" so that it won't give you Error RZ9992.
More info: https://learn.microsoft.com/en-us/aspnet/core/blazor/components/control-head-content?view=aspnetcore-6.0#control-head-content-in-a-razor-component
Also there is this library for loading scripts in blazor: https://github.com/excubo-ag/Blazor.ScriptInjection
This can be achieved by using a script loader and JSRuntime. Check this out.

<route-list/> in Vue application?

I maintain a web application built on VueJS+Vuetify with some AngularJS. There is a tag in a .vue file I have never seen before and cannot find any documentation on anywhere: <route-list/>
Code:
<route-list v-bind:routes="computedData" />
From what I can tell it binds a list of routes into a side bar navigation based on a computed function.
Is this some kind of depreciated Vue tag? I can't find anything on this tag whatsoever.
Are you sure it is not your own plugin?
Vue.use (<plugin>);
See more details: https://v2.vuejs.org/v2/guide/plugins.html#Using-a-Plugin

Google Cast is="google-cast-button" Not Loading When Inside Angular Component

I am trying to add Google Cast to my music app. It works properly when I include the button and the script in the index.html file. However, when I move the button to a component, it no longer registers the button. I have tried adding this code to the components constructor as a way of delaying the load time of the cast library but it still doesn't register:
let script = window['document'].createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1');
window['document'].body.appendChild(script);
I copied this idea from the source of this npm:
https://www.npmjs.com/package/ng-cast
Any idea on how I can get the is="google-cast-button" to register late in the load process?
The most robust solution in my opinion is to add schemas: [ CUSTOM_ELEMENTS_SCHEMA ] to either your app.module.ts or feature.module.ts. By doing so, you can place the chrome cast button in your app with <google-cast-launcher></google-cast-launcher>, which is far more stable than messing with the DOM manually within your component.
I found this with react.js - if the button is created via innerHTML, then the 'is=' scripts of the web component won't run. The only way to get the scripts to run on a dynamically created button is to use the document.createElement syntax. This may mean digging in to angular to figure out how to create one that way. In react, it means waiting for componentDidMount and inserting the element into the DOM that way.
So not a BIG help, but maybe a hint of what to try next (granted it has been a few months).

Load HTML from html file into Vue div

So, I'm using jsfiddle to follow THIS
{{respondedText}}
<div>{{respondedText}}</div>
However, say I want to read in HTML content from a file or site and then load it into that div; instead of displaying "Event Received: Event 2".
This is ultimately a building block for me in what I'm trying to use it for. I'm hoping, by successfully getting this example to work, that I can build a webapp that has buttons that, onpress, will load html from another local file on my server without reloading the entire page.
To fill an element with active HTML you have to use the v-html directive
<div v-html="respondedTest"></div>
This will allow any valid HTML but you have to note that you can't load Vue components asynchronously this way; It's only for static HTML.
Here is your JSFiddle Updated to send some HTML with the click events.
EDIT:
Looking into the spirit of your question you might want to look at vue-router It's a pretty good system to allow you to have a single page app with a routing system similar to a standard page routing system. It also allows you to mount Vue components in your pages instead of static HTML.

Categories