I need to make all the links from a text open a new tab, and the text come from dangerouslySetInnerHTML={{__html: content,}}. the code is in a new class that extends component in react the block of code where i pick the text id in < section>
Here is my solution using replace
var content = `<a href="https://stackoverflow.com">Stack Overflow</a><a href="https://google.com">Google</a>`;
class App extends React.Component {
render(){
return (
<div
dangerouslySetInnerHTML={{
__html: content.replace(/href/g, "target='_blank' href")
}}>
</div>
)
}
}
Just add rel="noopener noreferrer"
will fix your problem.
https://caniuse.com/?search=noopener%20
<a href="https://hasantezcan.dev" target="_blank" rel="noopener noreferrer">Go to website</a>
Here is my solution using replace
var content = `<a href="https://stackoverflow.com">Stack Overflow</a><a href="https://google.com">Google</a>`;
class App extends React.Component {
render(){
return (
<div
dangerouslySetInnerHTML={{
__html: content.replace(/href/g, "target='_blank' href")
}}>
</div>
)
}
}
<Link to="route" target="_blank" onClick={(event) => {event.preventDefault(); window.open(this.makeHref("Your_route"));}} />
I Mean
<Link ... target="_blank">
OR
<a target='_blank' href={'Your_url'})}>Your Text</a>
You can use:
<Link to="route" target="_blank" onClick={(event) => {event.preventDefault(); window.open(this.makeHref("route"));}} />
Please refer to React-Router open Link in new tab
Rather than changing them up front, you can update them on the fly with a click handler.
<div onClick={sendLinksToNewWindow}>
function sendLinksToNewWindow(event) {
if (!(event.target instanceof HTMLElement))
return;
// Use .closest to handle scenario where target isn't the anchor itself.
// Ex: `<a href='https://example.com'><span>click here</span></a>`
const anchor = event.target.closest('a');
if (anchor !== null) {
anchor.target = '_blank';
anchor.rel = 'noopener';
}
}
In React, you can add the target="_blank" attribute to an anchor () element by using the dangerouslySetInnerHTML attribute, like so:
<a href={url} dangerouslySetInnerHTML={{__html: linkText}} target="_blank" rel="noopener noreferrer" />
or by using JSX and Link from react-router-dom package
import { Link } from 'react-router-dom'
{linkText}It's important to also include the rel="noopener noreferrer" attribute to prevent a potential security vulnerability.
Alternatively, you can use the onClick event to open the link in a new tab, like so:
<a href={url} onClick={(e) => { e.preventDefault(); window.open(url, '_blank'); }}>{linkText}
This will open the link in a new tab when clicked.
© 2022 - 2024 — McMap. All rights reserved.