[ 
https://issues.apache.org/jira/browse/WEEX-233?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16389487#comment-16389487
 ] 

ASF GitHub Bot commented on WEEX-233:
-------------------------------------

Github user acton393 commented on a diff in the pull request:

    https://github.com/apache/incubator-weex/pull/1047#discussion_r172826404
  
    --- Diff: ios/sdk/WeexSDK/Sources/Component/WXWebComponent.m ---
    @@ -69,6 +71,11 @@ - (instancetype)initWithRef:(NSString *)ref 
type:(NSString *)type styles:(NSDict
     {
         if (self = [super initWithRef:ref type:type styles:styles 
attributes:attributes events:events weexInstance:weexInstance]) {
             self.url = attributes[@"src"];
    +        
    +        if(attributes[@"source"]){
    +            self.source = attributes[@"source"];
    --- End diff --
    
    the init method is executed in background thread named component method and 
 `self.source` will call [self setSource:""], 
    the method for `setSource` called view operation which is only for main 
thread.
    
    A better way is that define another member for source to save the variable 
during  this initialization,  and call  self.source in component hook lifeCycle 
like  `viewDidLoad`.



> More enhanced about <web> component
> -----------------------------------
>
>                 Key: WEEX-233
>                 URL: https://issues.apache.org/jira/browse/WEEX-233
>             Project: Weex
>          Issue Type: Improvement
>          Components: iOS
>            Reporter: TangWei
>            Assignee: Adam Feng
>            Priority: Major
>              Labels: features, newbie
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> Hi, I'm Tw93(侑夕) from [Fliggy|https://www.fliggy.com/], I'd like to discuss 
> the enhancements about component, let it take over where we can't implement 
> through weex.
> h2. Target
> {{<web>}} is used to display web content that specified by src attribute in 
> weex page,We also can use webview module to control WebView behavior such as 
> goBack, goForward and reload.
> But it's not enough in most businesses,I think a more enhanced web component 
> should have the following:
>  * Support to send messages from Weex to a html in component.
>  * Support to send messages from a html in component to Weex.
>  * Support to render html source.
> Previously, component was an island that only rendered a remote url, but 
> enabled it to communicate through the context native to the webView. Then I'm 
> going to describe the solution that I came up with.
> h2. My solution
> h3. Code
>  * Weex iOS:
>  ** 
> [https://github.com/tw93/incubator-weex/blob/ios-feature-enhanced-web/ios/sdk/WeexSDK/Sources/Component/WXWebComponent.m]
>  * Weex Vue Demo:
>  ** [http://dotwe.org/vue/8847473f8f596573dadb66a344edfce2]
>  ** [Demo Bundle 
> JS|http://dotwe.org/raw/dist/b1f6d242760945d4b674c4f5913a39e4.bundle.wx]
>  ** [Web End|http://h5.m.taobao.com/trip/wx-detection-demo/web.html]
> h3.  
> [Demo|https://gw.alipayobjects.com/zos/rmsportal/sBfTGamezxaBCGPshyXT.gif] && 
> [Theory|https://img.alicdn.com/tfs/TB1hEhXbxGYBuNjy0FnXXX5lpXa-1872-1208.png]
> |[!https://camo.githubusercontent.com/4c7a7b69d686b8127a0bdc89962c1aceac912083/68747470733a2f2f67772e616c697061796f626a656374732e636f6d2f7a6f732f726d73706f7274616c2f7342665447616d657a78614243475073687958542e676966|width=240!|https://camo.githubusercontent.com/4c7a7b69d686b8127a0bdc89962c1aceac912083/68747470733a2f2f67772e616c697061796f626a656374732e636f6d2f7a6f732f726d73706f7274616c2f7342665447616d657a78614243475073687958542e676966]|[!https://camo.githubusercontent.com/b1ed3e13b070b8302c2cecb067346a8da051207c/68747470733a2f2f696d672e616c6963646e2e636f6d2f7466732f544231684568586278475942754e6a7930466e585858356c7058612d313837322d313230382e706e67|width=600!|https://camo.githubusercontent.com/b1ed3e13b070b8302c2cecb067346a8da051207c/68747470733a2f2f696d672e616c6963646e2e636f6d2f7466732f544231684568586278475942754e6a7930466e585858356c7058612d313837322d313230382e706e67]|
> h3. Details
> h4. Support to send messages from Weex to a html in component.
>  * Native:
>  \{{- (void)postMessage:(NSDictionary *)data { NSDictionary *eventDict = @ { 
> @"data" : data }
> ; NSString *json = [WXUtility JSONString:eventDict]; NSString *code = 
> [NSString stringWithFormat:@"(function ()\\{document.dispatchEvent(new 
> MessageEvent('message', %@));}())",json]; [_jsContext evaluateScript:code]; } 
> }}
>  * How to use:
>  \{{// Weex const webview = weex.requireModule('webview'); 
> webview.postMessage(this.$refs.webview, {detail:"message"}); // Web 
> document.addEventListener('message',function(e)\{ console.log(e.data.detail) 
> },false) }}
> h4. Support to send messages from a html in component to Weex.
>  * Native:
>  {{_jsContext[@"postMessage"] = ^(JSValue *data){ [weakSelf 
> fireEvent:@"message" params:[data toDictionary]]; }; }}
>  * How to use:
>  \{{// Weex <web @message="onMessage"></web> // Web 
> window.postMessage(message, targetOrigin, false); }}
> h4. Support to render html source.
>  * Native:
>  {{[_webview loadHTMLString:_source baseURL:nil]; }}
>  * How to use:
>  <web source='<p style="text-align: center;"><img align="absmiddle" 
> src="http://img03.taobaocdn.com/imgextra/i3/1124701655/TB2zmmIcpXXXXbIXpXXXXXXXXXX_!!1124701655.jpg"/></p>'></web>
> Welcome to put forward any suggestion about the solution or other 
> requirements for the component, Thanks!



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to