如何在将在移动浏览器上打开的 Highcharts 工具提示中添加链接?
How can I add links in a Highcharts tooltip that will open on mobile's browser?
我正在使用 expo 开发 React Native 应用程序。其中一个屏幕包含使用 Highcharts 创建的图形。所有点都有一个关联的 工具提示 和一些文本,我想向其中添加一个 link ,它将在浏览器中打开 URL (即,外部应用程序)。
基本上,应用代码如下所示:
import ChartView from 'react-native-highcharts';
render() {
let Highcharts = "Highcharts";
let config ={
chart: {
type: "line",
animation: Highcharts.svg,
...
tooltip: {
followTouchMove: false,
useHTML: true,
formatter: function () {
return `<div class="text">bla bla bla
<a href="http://www.google.cat">my link here/a>
</div>`;
}
},
};
渲染于:
return(
<View style={styles.container}>
<ChartView
config={config}
/>
</View>
签入 Link inside of a Highcharts tooltip 我看到了一些有趣的想法,例如在 charts
键中添加此信息:
events: {
click: function (event) {
var url = 'http://www.google.cat';
window.open(url, '_blank');
}
}
有效,但它会在 React Native 的 ChartView
中打开 link。也就是说,带有图形的 space 显示给定的 URL。但是,我希望 URL 在浏览器中打开。
有没有办法在浏览器中打开 link? React Native 的 Linking.openURL(url);
是这样做的方法,但我看不到如何从 config
设置中 bing Linking.openURL
。
我使用 CharView 中的 onMessage
解决了这个问题:
return(
<View style={styles.container}>
<ChartView
onMessage={m => this.onMessage(m)}
config={config}
/>
</View>
这会触发此方法打开 URL:
onMessage = (m) => {
let data = JSON.parse(m.nativeEvent.data);
Linking.openURL(data.url)
};
并且 URL 通过全局变量 window.myURL
填充并使用 postMessage()
:
发送消息
render() {
let Highcharts = "Highcharts";
let config ={
...
plotOptions: {
series: {
stickyTracking: false,
point: {
events: {
click: function(e) {
window.postMessage(JSON.stringify({'url': window.myUrl}));
}
}
}
},
},
tooltip: {
useHTML: true,
formatter: function () {
window.myUrl = extras.url;
return `<div class="text">bla bla bla
<a href="http://www.google.cat">my link here/a>
</div>`;
}
};
它在 iOS 上运行良好,但在 Android 上运行良好。
我正在使用 expo 开发 React Native 应用程序。其中一个屏幕包含使用 Highcharts 创建的图形。所有点都有一个关联的 工具提示 和一些文本,我想向其中添加一个 link ,它将在浏览器中打开 URL (即,外部应用程序)。
基本上,应用代码如下所示:
import ChartView from 'react-native-highcharts';
render() {
let Highcharts = "Highcharts";
let config ={
chart: {
type: "line",
animation: Highcharts.svg,
...
tooltip: {
followTouchMove: false,
useHTML: true,
formatter: function () {
return `<div class="text">bla bla bla
<a href="http://www.google.cat">my link here/a>
</div>`;
}
},
};
渲染于:
return(
<View style={styles.container}>
<ChartView
config={config}
/>
</View>
签入 Link inside of a Highcharts tooltip 我看到了一些有趣的想法,例如在 charts
键中添加此信息:
events: {
click: function (event) {
var url = 'http://www.google.cat';
window.open(url, '_blank');
}
}
有效,但它会在 React Native 的 ChartView
中打开 link。也就是说,带有图形的 space 显示给定的 URL。但是,我希望 URL 在浏览器中打开。
有没有办法在浏览器中打开 link? React Native 的 Linking.openURL(url);
是这样做的方法,但我看不到如何从 config
设置中 bing Linking.openURL
。
我使用 CharView 中的 onMessage
解决了这个问题:
return(
<View style={styles.container}>
<ChartView
onMessage={m => this.onMessage(m)}
config={config}
/>
</View>
这会触发此方法打开 URL:
onMessage = (m) => {
let data = JSON.parse(m.nativeEvent.data);
Linking.openURL(data.url)
};
并且 URL 通过全局变量 window.myURL
填充并使用 postMessage()
:
render() {
let Highcharts = "Highcharts";
let config ={
...
plotOptions: {
series: {
stickyTracking: false,
point: {
events: {
click: function(e) {
window.postMessage(JSON.stringify({'url': window.myUrl}));
}
}
}
},
},
tooltip: {
useHTML: true,
formatter: function () {
window.myUrl = extras.url;
return `<div class="text">bla bla bla
<a href="http://www.google.cat">my link here/a>
</div>`;
}
};
它在 iOS 上运行良好,但在 Android 上运行良好。