HtmlFormatHelper
HtmlFormatHelper
HtmlFormatHelper
HtmlFormatHelper
Class
Definition
Responsible for formatting HTML content that you want to share or add to the Clipboard. Also allows you to get HTML fragments from the content.
public : static class HtmlFormatHelperpublic static class HtmlFormatHelperPublic Static Class HtmlFormatHelper// You can use this class in JavaScript.
- Attributes
| Device family |
Windows 10 (introduced v10.0.10240.0)
|
| API contract |
Windows.Foundation.UniversalApiContract (introduced v1)
|
Examples
if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.html)) {
document.getElementById("htmlContentArea").className = "unhidden";
shareOperation.data.getHtmlFormatAsync().then(function (html) {
if (html !== null) {
var htmlFragment = Windows.ApplicationModel.DataTransfer.HtmlFormatHelper.getStaticFragment(htmlFormat);
// Set the innerHTML of the ifram to the HTML fragment.
var iFrame = document.getElementById("htmlContent");
iFrame.style.display = "";
iFrame.contentDocument.documentElement.innerHTML = htmlFragment;
}
});
// Loop through any images and use the resourceMap to map each image element's src.
var images = iFrame.contentDocument.documentElement.getElementsByTagName("img");
if (images.length > 0) {
shareOperation.data.getResourceMapAsync().done(function (resourceMap) {
if (resourceMap.size > 0) {
for (var i = 0, len = images.length; i < len; i++) {
var streamReference = resourceMap[images[i].getAttribute("src")];
if (streamReference) {
// Call a helper function to map the image element's src to a corresponding blob URL generated from the streamReference
setResourceMapURL(streamReference, images[i]);
}
}
}
});
}
//shareOperation.reportCompleted();
Remarks
For more information on how to use this class, check out DataPackage.SetHtmlFormat. You might also want to look at our topic, How to share HTML.
Methods
CreateHtmlFormat(String) CreateHtmlFormat(String) CreateHtmlFormat(String) CreateHtmlFormat(String)
Takes a string that represents HTML content and adds the necessary headers to ensure it is formatted correctly for share and Clipboard operations.
public : static PlatForm::String CreateHtmlFormat(PlatForm::String htmlFragment)public static string CreateHtmlFormat(String htmlFragment)Public Static Function CreateHtmlFormat(htmlFragment As String) As string// You can use this method in JavaScript.
- htmlFragment
- PlatForm::String String String String
A string representing the HTML content.
A string representing the formatted HTML.
Examples
public void ShareSourceLoad()
{
DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();
dataTransferManager.DataRequested += new TypedEventHandler<DataTransferManager, DataRequestedEventArgs>(this.DataRequested);
}
async void DataRequested(DataTransferManager sender, DataRequestedEventArgs e)
{
string htmlExample = "<p>Here is our store logo: <img src='assets/logo.png'>.</p>";
string fileExample = "assets\\logo.png";
RandomAccessStreamReference streamRef = null;
Windows.Storage.StorageFile file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(fileExample);
try
{
streamRef = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromFile(file);
}
catch (Exception ex)
{
// TODO: Handle the exception.
}
string htmlFormat = Windows.ApplicationModel.DataTransfer.HtmlFormatHelper.CreateHtmlFormat(htmlExample);
DataRequest request = e.Request;
request.Data.Properties.Title = "Share HTML Example";
request.Data.Properties.Description = "An example of how to share HTML.";
request.Data.SetHtmlFormat(htmlFormat);
request.Data.ResourceMap[fileExample] = streamRef;
}
function shareHtmlHandler(e) {
var request = e.request;
var htmlExample = "<p>Here is our store logo: <img src='images/logo.png'>.</p>";
var localImage = "images\\logo.png";
request.data.properties.title = "Share Html Example";
request.data.properties.description = "A demonstration that shows how to share an HTML fragment with a local image.";
var deferral = e.request.getDeferral();
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(localImage).done(function (imageFile) {
request.data.setHtmlFormat(Windows.ApplicationModel.DataTransfer.HtmlFormatHelper.createHtmlFormat(htmlExample));
request.data.resourceMap[localImage] = Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(imageFile);
deferral.complete();
}, function (err) {
request.failWithDisplayText(err);
});
}
GetStaticFragment(String) GetStaticFragment(String) GetStaticFragment(String) GetStaticFragment(String)
Gets a string that represents an HTML fragment.
public : static PlatForm::String GetStaticFragment(PlatForm::String htmlFormat)public static string GetStaticFragment(String htmlFormat)Public Static Function GetStaticFragment(htmlFormat As String) As string// You can use this method in JavaScript.
- htmlFormat
- PlatForm::String String String String
The formatted HTML.
An HTML fragment based on the formatted HTML.
Examples
if (shareOperation.data.contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.html)) {
document.getElementById("htmlContentArea").className = "unhidden";
shareOperation.data.getHtmlFormatAsync().then(function (html) {
if (html !== null) {
var htmlFragment = Windows.ApplicationModel.DataTransfer.HtmlFormatHelper.getStaticFragment(htmlFormat);
// Set the innerHTML of the ifram to the HTML fragment.
var iFrame = document.getElementById("htmlContent");
iFrame.style.display = "";
iFrame.contentDocument.documentElement.innerHTML = htmlFragment;
}
});
// Loop through any images and use the resourceMap to map each image element's src.
var images = iFrame.contentDocument.documentElement.getElementsByTagName("img");
if (images.length > 0) {
shareOperation.data.getResourceMapAsync().done(function (resourceMap) {
if (resourceMap.size > 0) {
for (var i = 0, len = images.length; i < len; i++) {
var streamReference = resourceMap[images[i].getAttribute("src")];
if (streamReference) {
// Call a helper function to map the image element's src to a corresponding blob URL generated from the streamReference
setResourceMapURL(streamReference, images[i]);
}
}
}
});
}
//shareOperation.reportCompleted();
Remarks
As a security precaution, you shouldn't display HTML unless you're sure it doesn't have any dynamic content. You can use the GetStaticFragment method to get shared HTML content without any dynamic elements such as script tags.